c# - Why can I not delete a Registry key, even though it is present? -
i trying delete registry key , subkeys. method takes registry key string argument, , locates , deletes it.
i testing key:
hkey_local_machine\software\wow6432node\microsoft\windows\currentversion\uninstall\installshield_{694affc3-93d4-4049-af26-78739488eb4d}
and method have written:
static void removeregkey(string registrykey) { // split string hive, middle section, , subkey name string[] regkeyparts = registrykey.split('\\'); // hive string hive = regkeyparts[0].toupper(); // name string name = regkeyparts[regkeyparts.length - 1]; // middle bit string keypath = ""; (int = 1; < regkeyparts.length - 1; i++) { keypath = keypath + regkeyparts[i] + "\\"; } // create registry key registrykey regkey = null; switch (hive) { case ("hkey_local_machine"): regkey = registry.localmachine; break; case ("hkey_current_config"): regkey = registry.currentconfig; break; case ("hkey_current_user"): regkey = registry.currentuser; break; case ("hkey_users"): regkey = registry.users; break; case ("hkey_classes_root"): regkey = registry.classesroot; break; } // open registry key (everything parent of key want delete using (registrykey rk = regkey.opensubkey(keypath, true)) { console.writeline(rk.tostring()); // bit added verify subkey present - output console if found string[] sk = rk.getsubkeynames(); foreach (string s in sk) { if (s == name) { console.writeline(s); } } // if subkey present, delete if (regkey.opensubkey(name) != null) { console.writeline("registry key found - deleting it"); regkey.deletesubkeytree(name); } else { console.writeline("could not find reg key"); } } }
the key present, section:
string[] sk = rk.getsubkeynames(); foreach (string s in sk) { if (s == name) { console.writeline(s); } }
gives expected output shown in green here:
however, regkey.opensubkey(name)
evaluates null
, output after shows.
could not find reg key.
i running elevated user, , key not protected.
is typo in code? should this;
if (regkey.opensubkey(name) != null)
be
if (rk.opensubkey(name) != null)
and update delete too.
Comments
Post a Comment