用 VC6 制作 windows 7 8 以管理员权限运行的程序
2017-01-05 14:58
495 查看
Windows 7/8 的系统安全机制得到了很大的提高,不同的程序根据功能可以在不同的权限级别下运行,新的程序设计工具比如 Visual Studio 2005 以后的版本编译生成的程序都具备这种权限请求机制,但早期的 Visual C++ 6.0 则由于太过古老,生成的程序需要手工做一些设定才能获取合适的权限。
1
Win7/8 是以一份程序集清单 Assembly Manifest 文档来获取程序需要的权限信息的,这份清单可以以资源形式内嵌入应用程序,也可以以外置文件形式来和程序放置在一起,如果你能够重新编译程序,则建议使用第一种,使用内嵌式程序清单的程序在 Win7/8 中的图标会有盾牌标志,而使用外置形式则没有。
程序集清单的内容如下:
<?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>
上述清单指定了该程序运行需要管理员权限,如果需要使用其他权限,则可以用以下三者之一替换其中的 requestedExecutionLevel 节点。
<!-- 普通权限 -->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<!-- 管理员权限 -->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<!-- 最高权限 -->
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
对于外置程序集清单,可以将上述内容的文件以 应用程序名.Manifest 的文件名和程序放置在同一目录下即可,比如名为 test.exe 的应用程序集清单应命名为 test.exe.manifest 。
接下来重点讲述第一种内嵌形式的程序集清单如何设置
2
在 VC6 中切换到资源视图,在资源节点上点击右键,选择 “Insert”插入新资源
,然后选择自定义资源类型 "Custom",并输入类型:24,然后在该资源上点击右键,设置资源 ID 为 1
3
双击该资源类型 24,将上述 manifest 文件内容粘贴到资源里,保存,然后重新编译生成应用程序即可。
4
用上述方法生成的应用程序,在 Win7/8 系统里图标会有盾牌字样,双击此应用程序,会弹出用户账户控制的提示信息。
END
选择合适的权限而不是把所有程序都设置为需要管理员权限,如果你的应用程序并不涉及系统关键操作,则无需做此设置,因为这会限制你的应用程序使用,在一些无法获取管理员权限的场合(比如有权限要求的办公用电脑)会带来烦恼。
Win7/8 是以一份程序集清单 Assembly Manifest 文档来获取程序需要的权限信息的,这份清单可以以资源形式内嵌入应用程序,也可以以外置文件形式来和程序放置在一起,如果你能够重新编译程序,则建议使用第一种,使用内嵌式程序清单的程序在 Win7/8 中的图标会有盾牌标志,而使用外置形式则没有。
程序集清单的内容如下:
<?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>
上述清单指定了该程序运行需要管理员权限,如果需要使用其他权限,则可以用以下三者之一替换其中的 requestedExecutionLevel 节点。
<!-- 普通权限 -->
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
<!-- 管理员权限 -->
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
<!-- 最高权限 -->
<requestedExecutionLevel level="highestAvailable" uiAccess="false" />
对于外置程序集清单,可以将上述内容的文件以 应用程序名.Manifest 的文件名和程序放置在同一目录下即可,比如名为 test.exe 的应用程序集清单应命名为 test.exe.manifest 。
接下来重点讲述第一种内嵌形式的程序集清单如何设置
2
在 VC6 中切换到资源视图,在资源节点上点击右键,选择 “Insert”插入新资源
,然后选择自定义资源类型 "Custom",并输入类型:24,然后在该资源上点击右键,设置资源 ID 为 1
3
双击该资源类型 24,将上述 manifest 文件内容粘贴到资源里,保存,然后重新编译生成应用程序即可。
4
用上述方法生成的应用程序,在 Win7/8 系统里图标会有盾牌字样,双击此应用程序,会弹出用户账户控制的提示信息。
END
注意事项
选择合适的权限而不是把所有程序都设置为需要管理员权限,如果你的应用程序并不涉及系统关键操作,则无需做此设置,因为这会限制你的应用程序使用,在一些无法获取管理员权限的场合(比如有权限要求的办公用电脑)会带来烦恼。
相关文章推荐
- 用 VC6 制作 WIN7/8 下以管理员权限运行的程序
- 如何在VC中通过添加资源文件,使程序在Vista上用管理员权限运行
- UAC技巧:使 Windows 内置程序默认以管理员权限运行 推荐
- VC编写在windows7下以管理员权限运行的程序(转)
- VC编写vista或win7下需要管理员权限运行的程序
- VC编写在windows7下以管理员权限运行的程序(转)
- VC编写vista或win7下需要管理员权限运行的程序
- 2012-11-22 11:23 vc编写以管理员权限运行的程序
- windows 7下的程序 请求以管理员权限运行
- 如何设置C#程序在Windows 7 Vista下以管理员权限运行
- vc程序以管理员权限运行方法
- 如何在VC中通过添加资源文件,使程序在Vista上用管理员权限运行
- VC编写在windows7下以管理员权限运行的程序 2010-9-6 14:51
- VC编写vista或win7下需要管理员权限运行的程序
- VC程序在win7系统上运行,自动获取管理员权限
- 如何设置C#程序在Windows 7 Vista下以管理员权限运行
- VC程序在win7系统上运行,自动获取管理员权限 .
- VC编写在windows7下以管理员权限运行的程序
- VC程序在win7系统上运行,自动获取管理员权限
- UAC技巧:使 Windows 内置程序默认以管理员权限运行