UAC如何知道应用程序需要提升权限?

Rob*_*ert 7 .net c# uac

我有一个C#.NET应用程序,我正在维护大约20个支持程序集.

启动时,Windows会显示一个UAC对话框,其中显示:
是否要允许以下程序对此计算机进行更改.

如果我在文件的属性对话框中禁用"以管理员身份运行"复选框,则会出现以下对话框:
无法运行[应用程序名称].用户帐户"[Me]"没有足够的权限写入
C:\ ProgramData [公司] [应用程序名称]

此应用程序将尝试写入ProgramData目录,该目录导致UAC向用户请求权限.

UAC如何知道应用程序将写入ProgramData?
我可以改变什么以便UAC不抱怨?

dda*_*son 4

  1. UAC 如何知道应用程序将写入 ProgramData

    • 在 UAC 架构的虚拟化过程中,ProgramData 可能位于“受保护目录”列表下。(需要来源) 在此输入图像描述
  2. 我可以更改哪些内容以使 UAC 不会抱怨?

    • 这里有几个选项 -
      1. 看来您正在尝试写信C:\ProgramData[Company][Product]
        给我,这看起来像是路径分离问题。您正在尝试创建[或使用]一个名为的目录,C:\ProgramDataAdobePhotoshop 如果您的应用程序没有分隔这些目录,那么我会假设这导致了您的UAC问题。尝试添加路径分隔符。C:\ProgramData\Adobe\Photoshop[举个例子]
      2. 禁用UAC?UAC 的作用是防止未经授权的活动,如果您查看上面的流程图,任何具有写入“受限目录”或任何“提升操作”签名的应用程序都会陷入困境,并引发 UAC 提示。您的用户会点击它,一切都很好。
      3. 使用 Application Data 文件夹,而不是 ProgramData 文件夹。该文件夹似乎因某种原因被隐藏。

我的建议- 对于任何需要故事数据的应用程序 - 使用用户Application Data而不是ProgramData文件夹。如果您使用此目录,您将不会收到任何 UAC 提示。(这个问题可能会有所帮助)