是否可以在 Vista 中以编程方式禁用 UAC?或者,我可以以任何方式使我的应用程序运行不受 UAC 设置的限制吗?仅供参考,应用程序需要动态安装硬盘驱动器,这就是为什么我不能每次都请求 UAC 许可...
更新:
我正在寻找符合 Kosi2801 提到的内容,基本上是要求用户始终以“提升”模式启动程序。我希望权限是一次性的,我并不是说我在没有先征求许可的情况下以编程方式禁用 UAC。我确信有很多程序需要在这种模式下运行(尤其是与硬件相关的程序),因此应该有某种方式来适应它。
将以下路径中的
EnableLUA
DWORD
值设置为 0
,然后重新启动。
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
这将毫无问题地禁用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 的目标。所以不,你不能。