2011-11-21 14 views
6

this postを読み込んだ後、私は小さなアプリケーションを作成しようとしましたが、私は隠しレジストリキー/値を読み書きする必要があります。
Registry Manipulation using NT Native APIsCreating "Hidden" Registry Valuesリンクを確認しました。
最初に私は何か作業をしましたが、それはC++で書かれていますが、2番目のプロジェクトはうまくいくDelphiプロジェクトです。
私は最初に変換することができません、私は2番目に変換しようとすることができますが、キー/値も読み取るためにいくつかのコードを見つける必要があります。このため、私はC#で何か「準備ができて」テストされているかどうかを知りたいと思います。
私はProces Hacker v1.11ソースコードをダウンロードし、以下に示すようにDelphiの例を部分的に変換するために使用しましたが、隠しレジストリキーはアクセス可能です(Delphiではそうではありませんでした)。隠しレジストリキー/値

static void Main(string[] args) 
{ 
    string KeyNameBuffer = @"\Registry\User\S-1-5-21-3979903645-2167650815-2353538381-1001\SOFTWARE"; 
    string NewKeyNameBuffer = "Systems Internals"; 
    string HiddenKeyNameBuffer = "Can't touch me\0"; 
    string HiddenValueNameBuffer = "Hidden Value"; 

    // Apro la chiave di registro 
    IntPtr SoftwareKeyHandle = CreateKey(KeyNameBuffer, IntPtr.Zero); 
    if (SoftwareKeyHandle != IntPtr.Zero) 
    { 
     IntPtr SysKeyHandle = CreateKey(NewKeyNameBuffer, SoftwareKeyHandle); 
     if (SysKeyHandle != IntPtr.Zero) 
     {   
      // This key shouldn't be accessible, but it is    
      IntPtr HiddenKeyHandle = CreateKey(HiddenKeyNameBuffer, SysKeyHandle); 
      if (HiddenKeyHandle != IntPtr.Zero) 
      { 
       // I don't have APIs to write values 
      } 
     } 
    } 
} 

static IntPtr CreateKey(string keyName, IntPtr rootKey) 
{ 
    IntPtr res; 
    KeyCreationDisposition disp; 
    ObjectAttributes attributes = new ObjectAttributes(keyName, 
     ObjectFlags.CaseInsensitive, 
     new NativeHandle(rootKey)); 
    NtStatus st = Win32.NtCreateKey(out res, KeyAccess.All, 
     ref attributes, 0, 
     IntPtr.Zero, RegOptions.NonVolatile, out disp); 
    return st == NtStatus.Success ? res : IntPtr.Zero; 
} 

最後に:あなたが管理者としてアプリケーションを実行していない場合にビスタから、あなたは\Registry\Machine一部を書き込むことはできませんので、例では、私は、ユーザーのレジストリキーを使用していました。マシンごとの値を保存する必要がある場合は、レジストリのその部分を書き込むためのネイティブAPIを私たちに送る方法はありますか?

答えて

1

あなたがHKLMで必要としていて、特権があなたを許してくれないのであれば、どのAPI層を使用しても問題ありません.Nt *のReg *関数 - アクセス拒否ではできませんエラー。

関連する問題