如何在windows7和Vista中使MFC应用程序绕过UAC

如何在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

我有一个在VS Studio 2008中开发的MFC应用程序,它可以读取和写入安装文件夹中的JSON文件。它在vista(管理员)中工作得很好,但只有在UAC关闭时才能工作。当UAC开启时,应用程序无法写入其JSON文件。我想我必须创建一个清单文件,但我还没有真正尝试创建一个清单文件

问题:

  • 参考文献:。 这里说,您可以在VisualStudio开发环境中简单地设置链接器选项。 我需要选择哪些值:
    a) 是否启用用户帐户控制(UAC)?[我试过没有]

    b) UAC执行级别?[我试过highestAvailable]

    c) 和UAC旁路UI保护?[我试过了,是的]

  • 是否需要在软件包(exe、Dll等)中添加清单文件


  • 谢谢…

    您应该将此文件复制到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
    只会要求他们继续

    我已经非常晚了,但可以绕过: