2010-10-05 1 views
2

Это не может быть правильно, но это происходит со мной. У меня есть следующие функции:RegistryKey.GetSubKeyNames возвращает имена, которые не входят в этот подраздел!

private static bool KeyExists(RegistryKey key, string search) 
{ 
    //GetSubKeyNames is busted... 
    foreach (string subKey in key.GetSubKeyNames()) 
    { 
     if (subKey.Trim().Equals(search.Trim())) 
     { 
      return true; 
     } 
    } 
    return false; 
} 

Если я ставлю линию String[] names = key.GetSubKeyNames() и посмотреть в отладчике, я вижу, что перечисленные имена не то, что я вижу в смерзаться. Например, у меня есть часть программного обеспечения, которое появляется в разделе Wow6432Node, но оно появляется, если я ищу его в обычном подразделении программного обеспечения. Есть идеи?

Спасибо, Брайен

+1

Возможно, вы захотите прочитать о реестре Windows: http://msdn.microsoft.com/en-us/library/aa384235(VS.85).aspx –

ответ

9

Ключ Wow6432 содержит ключи реестра, которые видит 32-разрядные программы. Project + Properties, Build, проверьте настройку целевой платформы. По умолчанию он равен x86 в VS2010.

Перенаправление реестра может быть изменено, но не с классом .NET RegistryKey. Вам придется вызывать функции API реестра. Дополнительная справочная информация доступна in the SDK.

+0

Я вижу. Так что в моем коде у меня есть в основном переключатель для проверки того, что я ищу в программном обеспечении и в программном обеспечении wow3264. Возможно, я должен просто опустить коммутатор и позволить фреймворку делать то, что он хочет, без явной проверки узла wow 3264? –

+0

Вы не описали, почему это вообще имеет значение. Это не должно. –

+0

Я проверяю наличие некоторых потенциально установленных пакетов программного обеспечения. Я унаследовал этот код от некоторых предыдущих разработчиков, так что они могли быть совершенно безрезультатными, но идея в том, что если я не найду программное обеспечение в обычном подразделе, я просто проверю подраздел wow. Мое приложение скомпилировано для x86, но будет установлено на любой платформе. –