博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
VC6 在Vista Win7 下提高权限问题
阅读量:4671 次
发布时间:2019-06-09

本文共 2329 字,大约阅读时间需要 7 分钟。

以下程序集清单(Assembly Manifest)示例使你的程序在VISTA和WIN7下需要管理员权限,即在程序运行时弹出UAC提升权限对话框。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="test.exe.manifest"
    type="win32"
/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
    <security>
        <requestedPrivileges>
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
        </requestedPrivileges>
    </security>
</trustInfo>
</assembly>

如果希望更改 Windows 用户帐户控制级别,请用以下节点之一替换 requestedExecutionLevel 节点。

<!--普通权限-->

<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<!--管理员权限-->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<!--最高权限-->
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />

以下程序清单文件文件使你的程序使用WINXP风格的控件:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<assemblyIdentity
    version="1.0.0.0"
    processorArchitecture="X86"
    name="Test.exe.manifest"
    type="win32"
/>
<description>Test application for xp style.</description>
<dependency>
    <dependentAssembly>
        <assemblyIdentity
            type="win32"
            name="Microsoft.Windows.Common-Controls"
            version="6.0.0.0"
            processorArchitecture="X86"
            publicKeyToken="6595b64144ccf1df"
            language="*"
        />
    </dependentAssembly>
</dependency>
</assembly>

关联方式一般有两种:程序内部嵌入和外部关联。

程序内部嵌入方式的操作步骤为:
1. 新建一个程序集清单(Assembly Manifest)文件命名为"你的应用程序名.manifest",如你生成的文件为"Test.exe",那程序集清单(Assembly Manifest)文件名为"Test.exe.manifest"。
2. 导入资源选择刚刚新建的程序集清单(Assembly Manifest)文件(Test.exe.manifest),在弹出的资源类型对话框中输入"RT_MANIFEST",找到刚刚添加的资源,将它的ID属性修改为1,当然对于内部嵌入来说程序集清单文件名,资源类型和ID都是可以自定义的。
3. 重新编译你的程序即可。
外部关联方式的操作步骤为:
1. 新建一个程序集清单(Assembly Manifest)文件命名为"你的应用程序名.manifest",如你生成的文件为"Test.exe",那程序集清单(Assembly Manifest)文件名为"Test.exe.manifest"。
2. 将"Test.exe.manifest"放在你编译的"Test.exe"同一目录下即可。
注:若使用程序内部嵌入方式且程序集清单中定义需要管理员权限或以上权限时,编译的程序图标将有小盾牌标示,外部关联不会显示小盾牌。

我发现,在使用内部嵌入的时候,在XP下可以正常使用,但是在Vista 或是WIN7 程序会死掉,所以需要把导入的文件名修改下,改成:Test.xml 再导入进去就可以了

来自:

附加一点:如果是共享dll的话:

TENCENT GAME
注意name不同

转载于:https://www.cnblogs.com/hgy413/archive/2011/01/05/3693666.html

你可能感兴趣的文章
win10 UWP 序列化
查看>>
读书心得
查看>>
前端知识整理 CSS盒模型
查看>>
sendmail 常见报错总结
查看>>
asp.net Response.AddHeader的方法来下载
查看>>
neo4j-访问提示No authorization header supplied.
查看>>
android-activity生命周期方法
查看>>
基于贪心算法的几类区间覆盖问题 nyoj 12喷水装置(二) nyoj 14会场安排问题...
查看>>
web之JavaScript
查看>>
HTML input 控件
查看>>
MongoDB副本集配置系列六:定位MongoDB慢的原因
查看>>
[EGORefreshTableHeaderView]手动启动下拉更新的方法
查看>>
Linux磁盘分区/格式化/挂载目录
查看>>
raspberry pi下使用mp3blaster播放mp3音乐
查看>>
[转]win7 64位下android开发环境的搭建
查看>>
mysql 无法链接, 输入密码失败
查看>>
java中enum类型的使用
查看>>
枚举类型转换成字符串
查看>>
(剑指Offer)面试题46:求1+2+3+....+n
查看>>
连续子数组的最大和(基于动态规划)
查看>>