我创建了一个C#应用程序,改变“EnableLUA”项设置为0, 应用与管理员权限运行,并没有错误弹出:以编程方式禁用UAC - 更改不生效?
//Runs with admin rights
try
{
RegistryKey key =
Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System", true);
key.SetValue("EnableLUA", "0");
key.Close();
}
catch(Exception e)
{
MessageBox.Show("Error: " + e);
}
注册表项确实会从1变为0,但即使重新启动计算机后,仍然启用UAC的 。然后,当我进入控制面板>用户帐户控制时,滑块将全部关闭。当按下“保存”(并没有修改任何东西)时,UAC突然似乎被禁用。
这会是某种错误还是一种奇怪的安全性?有没有办法解决?
谢谢,我想用管理员权限,这应该是可能的,但它似乎没有。我可以打开UAC窗口,按Tab键两次然后按回车键,但那会非常难看。我只会通知用户。 – John 2014-10-07 15:10:38
您可以将应用程序配置为始终使用exe属性页上的兼容性选项卡运行。你也可以创建一个快捷方式来运行你的应用程序。 例如“提升myprogramsexe.exe” 如果你给你的程序某种安装程序,或者设计一个引导exe文件启动真正的exe文件,你可以去那条路线。用户将从UAC获得一个弹出窗口,但一旦接受并运行,它们将不会再运行,因为它正在运行。 – 2014-10-07 16:02:59
@ @ Ryios感谢您的评论,但即使在运行时,应用程序也会在下次启动应用程序时提示UAC提示。我想知道是否有可能以管理员权限编程禁用UAC,这看起来不可能。 – John 2014-10-08 12:44:32