繁体   English   中英

无法更改 Windows 10 上的注册表

[英]Unable to change registry on Windows 10

我正在尝试使用以下代码更改 Windows 10 上的 Shell 注册表项的值:

Public Function overwriteStartup()
    Try
        Dim winlogon As RegistryKey = My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", True)
        winlogon.SetValue("AutoRestartShell", 0, RegistryValueKind.DWord)
        winlogon.SetValue("Shell", Application.ExecutablePath, RegistryValueKind.String)
        winlogon.Flush()
        winlogon.Close()
        Return True
    Catch ex As Exception
        Return False
    End Try
End Function

问题是 Shell 和 AutoRestartShell 没有改变。 如果我在winlogon.Close()Return True之间添加MessageBox.Show(My.Computer.Registry.LocalMachine.OpenSubKey("SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon").GetValue("Shell")) ,我得到显示正确值的消息框(这意味着值已更改),但是当我检查 regedit 时,它显示的是原始值,因此它实际上并没有更改值。 不同的值,应该相同

如果您的应用可以读取注册表值 - 您必须先提供管理权限,然后才能让您的应用写入注册表值。 Go 到应用程序清单并将权限设置为requireAdministrator然后再试一次,它应该可以工作。

如果你去掉异常处理 Try Catch,你就会知道确切的原因。

我将目标框架更改为 .NET 4 并将目标 CPU 设置为 AnyCPU,它现在可以工作了。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM