以编程方式禁用UAC

问题描述 投票:0回答:8

是否可以在 Vista 中以编程方式禁用 UAC?或者,我可以以任何方式使我的应用程序运行不受 UAC 设置的限制吗?仅供参考,应用程序需要动态安装硬盘驱动器,这就是为什么我不能每次都请求 UAC 许可...

更新:

我正在寻找符合 Kosi2801 提到的内容,基本上是要求用户始终以“提升”模式启动程序。我希望权限是一次性的,我并不是说我在没有先征求许可的情况下以编程方式禁用 UAC。我确信有很多程序需要在这种模式下运行(尤其是与硬件相关的程序),因此应该有某种方式来适应它。

windows-vista uac
8个回答
18
投票

将以下路径中的

EnableLUA
DWORD
值设置为
0
,然后重新启动。

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System 

这将毫无问题地禁用UAC,我会对你的所有用户执行此操作,是否获得许可取决于你,因为vista UAC是如此可怕,我相信拥有它的人越少越好(在vista中)只是)现在在win7下更好了。

享受我的注册表技巧的乐趣!

在win7下也可以使用,让我知道你是如何相处的。


15
投票

您无法以编程方式禁用UAC,但您可以强制程序从一开始就以提升的权限运行,这样它就不会每次都提示。

这将导致它在启动时提示一次,但不是每次需要访问时提示。

为此,您需要创建一个清单文件并设置

<requestedExecutionLevel level="requireAdministrator">

有关详细信息,请参阅 MSDN。


9
投票

UAC 的目的是防止执行不需要的应用程序。如果可以通过编程方式禁用它,那么它将毫无价值。


3
投票

我在这里发布了一个有点细粒度(但丑陋)的解决方案

http://stackoverflow.com/questions/5344021/bypass-uac-in-vbscript/34445992#34445992

仅当您可以从任务计划程序启动应用程序时,它才有效。我在两台 Windows 7 笔记本电脑上运行它。这是一个行政解决方案。您需要管理员权限才能实现它。我将它用于 powershell 和 UPS 电源备份应用程序。我怀疑我会找到其他用途。


1
投票

我创建了一个小应用程序来执行此操作,但基本上需要设置 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 分钟作为服务运行一次,以“对抗”组策略,这对于开发人员计算机来说绝对是一个烦恼。

https://github.com/zleight1/DisableUAC


0
投票

以编程方式禁用 UAC 将达不到其目的,因为恶意软件、蠕虫、木马和病毒也可能会这样做,并且根本没有真正的安全效果。

您可能需要在管理员帐户下运行您的应用程序,或者(我认为)让 Microsoft 以某种方式签署您的应用程序。

可能还有其他我不知道的方法,但它们都不是以编程方式!


0
投票

UAC 是一种不可避免的罪恶,就像在城市中使用信号量一样。我建议适应新的范式。我个人不喜欢UAC;但我了解目的和好处。不幸的是,我们都创造了这个怪物。让我们回到1983年,对这些年来的变化做一个简短的评估,然后我们就会明白了。当然,如果目的是供私人使用,则一切皆有可能,如上所述;但这是有风险的,并且会成为黑洞的责任。


-1
投票

这将违背 UAC 的目标。所以不,你不能。

© www.soinside.com 2019 - 2024. All rights reserved.