2017-10-11 5 views
1

다른 컴퓨터에서 다른 레지스트리 분기를 내 보냈습니다. (전체 레지스트리가 너무 커서 전체를 차지할 수 없었습니다.)내 보낸 레지스트리 열기 C#

내 컴퓨터에서 .reg 파일에 이러한 레지스트리를 저장했으며 지금까지 일반 텍스트로만 검사했습니다. 키를 내 컴퓨터의 레지스트리와 병합하지 않기 때문에 Regedit로 열지 않으려합니다.

소프트웨어가 설치되어 있는지 확인하기 위해 C# 응용 프로그램에서 컴퓨터의 기존 레지스트리를 검사하고 있습니다.

string REGISTRY_KEY = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"; 
string REGISTRY_NAME = "Name of Software"; 
bool is64bit = true; 
RegistryView registryView = is64Bit ? RegistryView.Registry64 : RegistryView.Registry32; 
RegistryKey registryKey = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, registryView).OpenSubKey(REGISTRY_KEY); 
if (registryKey != null) 
{ 
    using (registryKey) 
    { 
     foreach (string subkeyName in registryKey.GetSubKeyNames()) 
     { 
      using (RegistryKey subkey = registryKey.OpenSubKey(subkeyName)) 
      { 
       string displayName = (string)subkey.GetValue("DisplayName"); 
       if (displayName != null && displayName.Contains(REGISTRY_NAME)) 
       { 
        Console.WriteLine("Found the program"); 
       } 
      } 
     } 
    } 
} 

내 컴퓨터의 HKLM보기에서 64 비트보기를 검색합니다.

그러나 지금은이 코드를 실행하고 싶지만 컴퓨터의 레지스트리 파일을 사용하는 대신 내 보낸 .reg 파일 중 하나를 사용하고 싶습니다. 내가 보낸 지점은 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion 지점입니다.

C#에서 RegistryKey 도구를 사용하여 내 컴퓨터에 저장된 레지스트리 파일을 열려면 어떻게해야합니까? (하지만 내 컴퓨터의 실제 레지스트리는 아닙니다)?

답변

1

미안하지만 AFAIK는 내장 된 .NET 레지스트리 기능으로는 불가능합니다. 당신은 자신의 텍스트 파서를 만들거나 파일 안에있는 키를 얻기 위해 이미 만들어진 파서를 사용해야 할 것이다.

동일한 것을 말하는 thisthis을 참조하십시오. this project은 GitHub에서 약 40 개의 별을 가진 레지스트리 파서입니다.

+0

Btw이 질문을한지 거의 20 일이 지났습니다. 다른 뭔가 생각 났니? –

+1

불행히도 해결책을 찾지 못했습니다. – user2494584