如何删除注册表项?

时间:2018-02-03 12:10:07

标签: vb.net regedit registrykey

这是我的代码:

Dim exePath As String = Application.ExecutablePath()
Dim key As Microsoft.Win32.RegistryKey
key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey("Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store", True)
key.DeleteValue(exePath)

但我不知道应用程序为什么不删除该密钥。

示例:找到密钥但不删除该密钥

enter image description here

2 个答案:

答案 0 :(得分:2)

要删除密钥,请使用 DeleteSubKey 方法。一个例子如下:

My.computer.Registry.Currentuser.DeleteSubKey(keypath)

但是,according to MSDN,如果

,可能会出现异常
  1. 密钥的名称为空或

  2. 用户没有删除/读取/写入密钥所需的权限

  3. 键名超过255个字符

  4. 密钥设置为只读

答案 1 :(得分:0)

系统会在启动应用程序时自动创建该值,这意味着您无法在应用运行时 将其删除

如果需要,您可以在应用关闭后将其删除,但必须从单独的应用中删除它,下次启动应用时,它会再次重新创建。

启动一个简单的cmd实例为您执行删除就足够了:

Dim psi As New ProcessStartInfo("cmd.exe", "/C timeout /t 3 /nobreak > NUL & reg delete ""HKCU\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Compatibility Assistant\Store"" /v """ & Application.ExecutablePath & """ /f")
psi.CreateNoWindow = True
psi.WindowStyle = ProcessWindowStyle.Hidden
Process.Start(psi)