c - 如果 Windows UAC 被拒绝,有没有办法让代码以较低的权限运行

标签 c windows manifest uac administrator

我正在尝试用 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>

抱歉,如果我没有详细说明......

我希望我的代码像这样工作:

  1. 用户运行程序
  2. UAC 出现要求提升权限
  3. 如果用户回答"is",一切正常,如果用户回答“否”,我希望我的代码以低权限运行

谢谢你的帮助

最佳答案

通过使用 list ,您通知操作系统您完成的程序需要请求的权限。

尽管如此,您所描述的是一个只有一个代码路径的程序实际上需要这些权限,而另一个则不需要。 在这种情况下,您最好从程序代码中以编程方式请求权限,而不是通过 list (在启动实际应用程序之前由操作系统处理)。

问题是这没有提供(就我的快速谷歌显示而言),所以另一种方法是编写一个包装器(或以某种方式将逻辑保留在同一个应用程序中)在没有权限的情况下启动,然后尝试运行具有提升权限的实际程序,如果失败,则在没有提升权限的情况下运行实际程序。

关于c - 如果 Windows UAC 被拒绝,有没有办法让代码以较低的权限运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65843146/

相关文章:

windows - 如何识别具有以编程方式可见和最小化的未显示窗口的 Windows 10 后台存储进程?

windows - 批量重命名文件并在文件名已存在时覆盖 (windows)

c - Windows API : Wait for data to be available on non-GUI console input (PIPE-based STDIN)

c - 在C中进行游戏的while循环?

c - 在两个数组的最后一个元素后面添加值

c - 在C中使用字符串数组

java - 使用 gradle 从 JAR 读取 list

class - Puppet: "Could not find class"在 list /模块更改后*经常*出现一次打嗝

java - 从 list 中引用的资源不能因配置而异

c - 如何修复c中的字符串或指针?