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:

enter image description 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

Popular posts from this blog

Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12:test (default-test) on project.Error occurred in starting fork -

windows - Debug iNetMgr.exe unhandle exception System.Management.Automation.CmdletInvocationException -

unity3d - Fatal error- Monodevelop-Unity failed to start -