我在VS Studio 2008中开发了一个MFC应用程序,它在其安装文件夹中读取和写入JSON文件。它在vista(管理员)中完美运行但仅在UAC关闭时。当UAC为ON时,应用程序无法写入其JSON文件。我想我必须创建一个清单文件,但我还没有真正尝试创建一个。
问题:
参考:http://msdn.microsoft.com/en-us/library/bb384691.aspx。
它在这里说你可以在Visual Studio开发环境中简单地设置链接器选项。
我需要选择什么值:
a)启用用户帐户控制(UAC)? [我没试过]。
b)UAC执行级别? [我试过最高可用]。
c)和UAC绕过UI保护? [我试过是]。
我是否需要在软件包中添加清单文件(exe,Dll等)?
...谢谢
答案 0 :(得分:12)
UAC的整个概念是你无法绕过它。如果可以,那就没用了。
唯一的解决方案(不管你应该做什么,而不仅仅是因为UAC)是永远不要在安装文件夹中写文件,而是在它所属的%APPDATA%文件中。
答案 1 :(得分:3)
您应该将此文件复制到AppData。修改程序文件中的文件将始终触发UAC提示。此操作需要管理员权限,而清单对此无效。
答案 2 :(得分:3)
添加清单文件只能声明应用程序需要UAC permisison。这样,在应用程序启动时将提示用户输入UAC。
如果这是您想要的here,您可以找到说明如何操作。
其他方法是安装一个使用LocalSystem帐户运行的服务,并允许(几乎)执行任何操作而不需要UAC权限。为此,您必须在UI应用程序和服务之间实现进程间通信。必须从具有适当安全属性的服务创建进程之间共享的内核对象,以便从不提升的程序访问。 安装该服务将提示用户输入UAC(与大多数其他安装一样)
答案 3 :(得分:0)
将HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Policies \ System中的EnableLUA DWORD值设置为0并重新启动。
这将禁用UAC没有问题,我会对你的所有用户做,无论有没有权限取决于你,因为远景UAC是如此可怕,以至于我相信那些拥有它的人越少越好(仅在vista中)现在在win7中更好。
玩我的注册表技巧:)
也在win7中工作,让我知道你是如何相处的。
事实证明,stackoverflow正在审查评论,这些评论显示如何删除UAC,因为我的帖子/帖子已经删除了一个勤奋的回答者的上述答案。
答案 4 :(得分:0)
您提到过您尝试将可执行文件显示为
highestAvailable
应设为requireAdministrator
。
不同之处在于highestAvailable
只会在用户确实是(UAC)被剥夺其管理员资格的管理员时才会提升。如果他们真的是标准用户,那么它就不会提升。
另一方面,requireAdministrator
要求他们会提升。如果用户不是管理员,则会向他们显示输入 管理员的用户名和密码的提示;他们必须打电话给某人下来并输入他们的用户名和密码。
如果用户已经是管理员,那么requireAdministrator
只会要求他们继续。