这是我的代码:
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)
但我不知道应用程序为什么不删除该密钥。
示例:找到密钥但不删除该密钥
答案 0 :(得分:2)
要删除密钥,请使用 DeleteSubKey
方法。一个例子如下:
My.computer.Registry.Currentuser.DeleteSubKey(keypath)
但是,according to MSDN,如果
,可能会出现异常密钥的名称为空或
用户没有删除/读取/写入密钥所需的权限
键名超过255个字符
密钥设置为只读
答案 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)