gpt4 book ai didi

c++ - Windows 7 如何确定您是否需要管理员权限? (VC60)

转载 作者:可可西里 更新时间:2023-11-01 10:20:40 24 4
gpt4 key购买 nike

问题:我正在用 C++ 为安装程序编写单元测试。安装程序需要管理员权限,但单元测试不需要。在开始测试时,我被要求以管理员身份启动测试/程序。

当我包含原始项目的 rc 文件时,这种情况就开始了。

编辑: 我正在将此项目升级到 VS2010,但仍在使用 vc60,因此没有 list 支持。这可能是相关的。

最佳答案

一般情况下,资源包含一个 list , list 的一部分说明程序是否需要管理员权限。由于这是一个设置实用程序,它可能有一个需要管理员访问权限的 list ,并且您的测试在它尝试共享资源文件时选择了它。

(其他人正在谈论用于猜测程序在没有 list 时是否需要管理员访问权限的启发式方法。例如,如果您有一个在 list 文件很常见之前制作的旧程序,操作系统可能尝试通过在文件名中查找某些短语(如“setup”)来猜测它是否是安装程序。我相信还有其他启发式方法。这是针对在 list 之前编写的旧程序的 hack,可以明确声明您的需求用于管理员访问。)

您可以通过提供自己的 list 来解决您的问题。最简单的方法是使用 /MANIFESTUAC链接器选项。

如果您使用的是较旧的工具链,您可能必须自己制作 list 文件并将其包含在您的资源中。

list 是一大块 XML。对你来说重要的一点看起来像这样:

<?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" name="yourprogram.exe" type="win32"/>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="asInvoker"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>

要将其嵌入到您的资源中,您的 .RC 文件应包含:

1 RT_MANIFEST <filename>

如果你的SDK太老了,没有定义RT_MANIFEST,你可以自己定义:

#define RT_MANIFEST 24

关于c++ - Windows 7 如何确定您是否需要管理员权限? (VC60),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29631480/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com