我正在尝试用 C 语言为 Windows 编写一个简单的应用程序,我希望它以提升的权限运行。这工作正常,但如果用户拒绝 UAC 提示,我想让它以较低的权限工作。
这是我的 list 文件:
<?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="reverse_shell"
type="win32"/>
<description>Description of your application</description>
<!-- Identify the application security requirements. -->
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="highestAvailable"
uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
抱歉,如果我没有详细说明......
我希望我的代码像这样工作:
- 用户运行程序
- UAC 出现要求提升权限
- 如果用户回答"is",一切正常,如果用户回答“否”,我希望我的代码以低权限运行
谢谢你的帮助
最佳答案
通过使用 list ,您通知操作系统您完成的程序需要请求的权限。
尽管如此,您所描述的是一个只有一个代码路径的程序实际上需要这些权限,而另一个则不需要。 在这种情况下,您最好从程序代码中以编程方式请求权限,而不是通过 list (在启动实际应用程序之前由操作系统处理)。
问题是这没有提供(就我的快速谷歌显示而言),所以另一种方法是编写一个包装器(或以某种方式将逻辑保留在同一个应用程序中)在没有权限的情况下启动,然后尝试运行具有提升权限的实际程序,如果失败,则在没有提升权限的情况下运行实际程序。
关于c - 如果 Windows UAC 被拒绝,有没有办法让代码以较低的权限运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65843146/