Управление реестром в C # - PullRequest
       2

Управление реестром в C #

1 голос
/ 16 сентября 2011

Я хотел бы удалить следующий узел из реестра.Как я могу это сделать?

HKEY_CLASSES_ROOT\Wow6432Node\CLSID\{D9AC2148-5E15-48AD-A693-E48714592381}

У меня так много:

string key = "D9AC2148-5E15-48AD-A693-E48714592381";
StringBuilder sb = new StringBuilder(key);
RegistryKey k = Registry.ClassesRoot.OpenSubKey("Wow6432Node\\CLSID", true);

Как мне поступить?

Ответы [ 2 ]

2 голосов
/ 16 сентября 2011

Необходимо учитывать перенаправление реестра ; это реальная проблема здесь. На 32-битном компьютере ключ, который вам нужен, не имеет WoW6432Node в пути.

Вы пытаетесь удалить

HKEY_CLASSES_ROOT\CLSID\{D9AC2148-5E15-48AD-A693-E48714592381}

из 32-битного представления реестра. Microsoft очень ясно, что вы не должны жестко кодировать WoW6432Node в своих приложениях:

Перенаправленные ключи сопоставляются с физическими местоположениями в Wow6432Node. Например, HKEY_LOCAL_MACHINE \ Software перенаправляется на HKEY_LOCAL_MACHINE \ Software \ Wow6432Node. Однако физическое местоположение перенаправленных ключей должно считаться зарезервированным системой. Приложения не должны напрямую обращаться к физическому местоположению ключа, поскольку это местоположение может измениться.

Так что удалите этот ключ, позвонив

DeleteSubKey(@"HKEY_CLASSES_ROOT\CLSID\{D9AC2148-5E15-48AD-A693-E48714592381}")

Но используйте перенаправитель, чтобы убедиться, что вы работаете с 32-разрядным представлением реестра.

В .NET вы можете достичь того, что вам нужно, двумя способами.

  1. Нацельтесь на x86 и пусть перенаправление сделает всю работу за вас.
  2. Если вы нацелены на x64 или AnyCPU, вам нужно использовать RegistryView.Registry32 (новое в .NET 4), чтобы открыть 32-битное представление реестра. Если у вас нет .NET 4, тогда вам нужно P / Invoke .
1 голос
/ 16 сентября 2011

Вы можете использовать метод DeleteSubKey :

string key = "{D9AC2148-5E15-48AD-A693-E48714592381}";
Registry.ClassesRoot.DeleteSubKey(@"Wow6432Node\CLSID\" + key);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...