2017-10-11 2 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

あなたはこの質問をしてから20日ほど経ちました。何か別のものを考え出したのですか? –

+1

残念ながら解決策が見つかりませんでした。 – user2494584

関連する問題