【发布时间】:2019-01-07 11:00:19
【问题描述】:
我已经看过这样的线程:Disabling UAC programmatically 但是它们有点旧,似乎我做不到。 我正在尝试创建一个 Windows 工具来帮助用户执行某些过程(例如启用或禁用 UAC)。到目前为止,这是我的代码,即使管理员正确,它也不会调低或调高 UAC 值。现在我没有使用管理员帐户(Windows 10),但我确实可以访问本地管理员凭据。
try
{
RegistryKey uac = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
if (uac == null)
{
uac = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
}
uac.SetValue("EnableLUA", 0);
uac.Close();
}
catch (Exception)
{
MessageBox.Show("Error!");
}
【问题讨论】:
-
“它失败了” - 请阅读How to Ask 并详细说明。首先删除
catch (Exception),因为它隐藏了重要信息。 -
我很好奇:你为什么需要这样做?
-
@CodeCaster 通过在没有管理员权限的情况下删除 try catch,应用程序会崩溃,说它无权访问 reg 键。管理员正确,没有崩溃或任何事情,但它不会禁用或启用 UAC。另外我这样做只是为了学习编码,我认为 Windows 工具会是个好主意
-
您不应该以编程方式执行此操作(旧/损坏的(vista)Windows 版本除外)
-
@EpicKip 我有一个软件可以降低 UAC 的值,然后要求用户重新启动计算机,说对 UAC 进行了更改。我的想法是复制该功能。我的意图不是要对用户隐藏它
标签: c#