是否可以在 Vista 中以编程方式禁用 UAC?或者,我可以让我的应用程序以任何方式不受 UAC 设置的限制吗?仅供参考,应用程序需要即时安装硬盘,这就是为什么我不能每次都请求 UAC 许可的原因......
更新:
我正在寻找与 Kosi2801 提到的内容一致的东西,基本上是要求用户始终以“提升”模式启动程序。我希望权限是 1 次,我并不是说我在没有先请求权限的情况下以编程方式禁用 UAC。我确信有很多程序需要在这种模式下运行(尤其是与硬件相关的程序),所以应该有某种方式来适应它。
是否可以在 Vista 中以编程方式禁用 UAC?或者,我可以让我的应用程序以任何方式不受 UAC 设置的限制吗?仅供参考,应用程序需要即时安装硬盘,这就是为什么我不能每次都请求 UAC 许可的原因......
更新:
我正在寻找与 Kosi2801 提到的内容一致的东西,基本上是要求用户始终以“提升”模式启动程序。我希望权限是 1 次,我并不是说我在没有先请求权限的情况下以编程方式禁用 UAC。我确信有很多程序需要在这种模式下运行(尤其是与硬件相关的程序),所以应该有某种方式来适应它。
将 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 中的 EnableLUA DWORD 值设置为 0 并重新启动。
这将毫无问题地禁用 UAC,我会对您的所有用户执行此操作,无论是否允许由您决定,因为 vista UAC 太可怕了,我相信拥有它的人越少越好(仅在 vista 中) ) 现在在win7中更好。
玩我的注册表技巧:)
win7 也可以,请告诉我你是怎么处理的。
您不能以编程方式禁用 UAC,但您可以强制程序从一开始就以提升的权限运行,因此它不会每次都提示。
这将导致它在启动时提示一次,但不是每次需要访问时都提示。
为此,您需要创建一个清单文件并设置<requestedExecutionLevel level="requireAdministrator">
UAC 的目的是防止执行不需要的应用程序。如果可以以编程方式禁用它,那将毫无价值。
我在这里发布了一个有点颗粒(但丑陋)的解决方案
http://stackoverflow.com/questions/5344021/bypass-uac-in-vbscript/34445992#34445992
仅当您可以从任务计划程序启动应用程序时,它才有效。我让它在两台 Windows 7 笔记本电脑上运行。这是一个行政解决方案。您需要管理员权限才能实现它。我将它用于 powershell 和我的 UPS 电源备份应用程序。我怀疑我会找到其他用途。
我创建了一个小应用程序来执行此操作,但基本上您需要设置 4 个注册表项。
C# 示例:
Microsoft.Win32.Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System","EnableLUA", 0);
Microsoft.Win32.Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", "ConsentPromptBehaviorAdmin", 0);
Microsoft.Win32.Registry.SetValue("HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", "PromptOnSecureDesktop", 0);
Microsoft.Win32.Registry.SetValue("HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Action Center\\Checks\\{C8E6F269-B90A-4053-A3BE-499AFCEC98C4}.check.0", "CheckSetting", StringToByteArray("23004100430042006C006F00620000000000000000000000010000000000000000000000"), RegistryValueKind.Binary);
我的应用程序每 5 分钟作为服务运行一次,以“对抗”组策略,这对于开发人员机器来说是绝对的烦恼。
以编程方式禁用 UAC 会破坏其目的,因为这也可能由恶意软件、蠕虫、特洛伊木马和病毒来完成,并且根本没有真正的安全效果。
您可能需要在管理员帐户下运行您的应用程序,或者(我认为)让 Microsoft 以某种方式签署您的应用程序。
可能还有其他我不知道的方式,但它们都不是以编程方式!
UAC 是一种必要的邪恶,就像在城市中使用信号量一样。我建议适应新的范式。我个人不喜欢 UAC;但我了解目的和好处。不幸的是,我们都创造了这个怪物。让我们回到 1983 年,对这些年来的变化做一个简短的评估,然后,我们就会明白了。当然,如果意图是私人使用,那么一切皆有可能,如上所述;但这将是有风险的,并成为黑洞的责任。
那将打败 UAC 的对象。所以不,你不能。