如何在windows7和Vista中使MFC应用程序绕过UAC
我有一个在VS Studio 2008中开发的MFC应用程序,它可以读取和写入安装文件夹中的JSON文件。它在vista(管理员)中工作得很好,但只有在UAC关闭时才能工作。当UAC开启时,应用程序无法写入其JSON文件。我想我必须创建一个清单文件,但我还没有真正尝试创建一个清单文件 问题:如何在windows7和Vista中使MFC应用程序绕过UAC,mfc,visual-c++,uac,windows-vista,Mfc,Visual C++,Uac,Windows Vista,我有一个在VS Studio 2008中开发的MFC应用程序,它可以读取和写入安装文件夹中的JSON文件。它在vista(管理员)中工作得很好,但只有在UAC关闭时才能工作。当UAC开启时,应用程序无法写入其JSON文件。我想我必须创建一个清单文件,但我还没有真正尝试创建一个清单文件 问题: 参考文献:。 这里说,您可以在VisualStudio开发环境中简单地设置链接器选项。 我需要选择哪些值: a) 是否启用用户帐户控制(UAC)?[我试过没有] b) UAC执行级别?[我试过highest
a) 是否启用用户帐户控制(UAC)?[我试过没有] b) UAC执行级别?[我试过highestAvailable] c) 和UAC旁路UI保护?[我试过了,是的]
谢谢…您应该将此文件复制到AppData。修改程序文件中的文件将始终触发UAC提示。此操作需要管理员权限,而清单对您没有帮助。UAC的整个概念是您不能绕过它。如果你能,那就没用了
唯一的解决方案(这是您无论如何都应该做的,不仅仅是因为UAC)是永远不要在安装文件夹中写入文件,而是在它所属的%APPDATA%中写入文件。添加清单文件时,您只能声明应用程序需要UAC许可。这样,在应用程序启动时将提示用户输入UAC 如果这是你想要的,你可以找到如何做的描述 另一种方法是安装一个使用LocalSystem帐户运行的服务,并且允许(几乎)在不需要UAC许可的情况下执行任何操作。为此,您必须在UI应用程序和服务之间实现进程间通信。进程之间共享的内核对象必须从具有适当安全属性的服务创建,以便从非提升程序访问。
安装该服务将提示用户使用UAC(与大多数其他安装一样)将HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policys\System中的EnableLUA DWORD值设置为0并重新启动 这将毫无问题地禁用UAC,我会对您的所有用户这样做,有没有权限取决于您,因为vista UAC太可怕了,我确实相信拥有它的人越少越好(仅在vista中),现在在win7中就越好 享受我的注册技巧:) 也在win7中工作,请告诉我您是如何使用它的
原来stackoverflow正在审查说明ti如何禁用UAC的评论,因为我的帖子/帖子中有一位勤勉的回答者的上述答案被删除。您提到您尝试将可执行文件显示为
- UAC执行级别:
highestAvailable
requireAdministrator
区别在于,highestAvailable
只有在用户真的是一个被(UAC)剥夺了管理特权的管理员时才会提升。如果他们真的是标准用户,那么它就不会提升
另一方面,requireAdministrator
将要求他们提升。如果用户不是管理员,系统将提示他们输入管理员的用户名和密码;他们必须打电话叫人下来,输入用户名和密码
如果用户已经是管理员,则
requireAdministrator
只会要求他们继续我已经非常晚了,但可以绕过: