0

应该就是这么简单。这段代码看起来不错。它不会崩溃。那么为什么它不按它说的去做呢?我不能像这样更改注册表中的任何内容,但所有谷歌搜索都说这是应该的。任何帮助是极大的赞赏。

    private void button2_Click(object sender, EventArgs e)
    {
        RegistryKey myKey = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\",true);
        myKey.SetValue("AutoAdminLogon", "1");   

    }
4

1 回答 1

1

您可能正在处理 Win7 的“影子注册表”问题,其中某些注册表更改不是对“实际”注册表进行的,而是在恶意访问时保护原始注册表的“影子”副本。注册表更改被重定向到注册表的用户特定区域,但呈现为好像它们在 HKLM 中一样(如您的示例中所示)。

我相信,注册表虚拟化是在 Vista 中引入的,但至少可以很好地解释您的问题。

http://msdn.microsoft.com/en-us/library/bb530198.aspx 如果不​​这样做,您可能正在对注册表的 Wow64 节点进行更改。检查您在 HKLM\Software\Wow6432Node\Microsoft\Windows NT\CurrentVersion\Winlogon 下的更改,并查看您的更改是否正在那里进行。在 64 位版本的 Windows 上,32 位代码在 WOW 子系统下运行,来自此类应用程序的注册表调用被路由到注册表中的 Wow6432 节点 - 所有调用 32 位应用程序都不知道。

于 2012-08-03T01:21:12.827 回答