我有一个C#.NET应用程序,我正在维护大约20个支持程序集。
启动时,Windows会显示一个UAC对话框,其中显示:
是否要允许以下程序对此计算机进行更改。
如果我在文件属性对话框中禁用“以管理员身份运行”复选框,则会出现以下对话框:
无法运行[应用程序名称]。用户帐户“[我]”没有足够的权限写入
C:\ ProgramData [公司] [申请名称]
此应用程序将尝试写入ProgramData目录,导致UAC要求用户许可。
UAC如何知道应用程序将写入ProgramData?
我可以改变什么以便UAC不抱怨?
答案 0 :(得分:4)
UAC如何知道应用程序将写入ProgramData
我可以改变什么以便UAC不抱怨?
C:\ProgramData[Company][Product]
C:\ProgramDataAdobePhotoshop
的目录
如果您的应用程序没有分离这些目录,那么我认为这会导致您的UAC问题。尝试添加路径分隔符。 C:\ProgramData\Adobe\Photoshop
[例如] 我的建议 - 对于需要故事数据的任何应用程序 - 使用用户Application Data
而不是ProgramData
文件夹。如果使用此目录,则不会收到任何UAC提示。 (this question可以提供帮助)
答案 1 :(得分:0)
应用程序可能有一个清单文件,例如:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<requestedExecutionLevel level="requireAdministator" uiAccess="false"/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
如果有,requestedExecutionLevel level="requireAdministator
将使其显示UAC对话框。
清单文件通常称为app.manifest