プログラムで管理者アカウントを使用してレジストリ内の他のユーザーにキーを追加する

c#(またはc/c ++または他の言語)を使用して、他のユーザーのレジストリに新しいキーを追加する方法

ここにシナリオがあります: クライアントPC:「管理者」アカウント(ログイン)

「ユーザーA」と「ユーザーB」は、ドメイン「myDomain」を介してのみクライアントPCにログインできます(既にログオンしており、クライアントPCのユーザーには独自のフォルダがあります)

このコードを実行して管理者を使用して新しいキーを作成します

Registry.CurrentUser.CreateSubKey(@ "SOFTWARE \ myProgram \ DefaultConfig");

問題は、このキーは「管理者」アカウント用にのみ作成されていることです

私は "管理者"アカウントを使用している間に "ユーザーA"と "ユーザーB"のこのキーを作成したい

「ユーザーA」と「ユーザーB」の両方がHKEY_USERSに表示されません。

同じPCにもっと多くのユーザーがいて、このレジストリキーを追加したい場合は、すべてのユーザーにキーを追加するコードをループすることも可能ですか?ループを読み書きしますか?

4

1 答え

すべてのユーザーのキーは HKEY_USERS ルートキーの下に格納されます。このルートキーの下には、キー名として SID を持つすべてのユーザーのためのキーがあります。

目的のユーザーのSIDを取得してから、このルートキーにアクセスする必要があります。

// Gets the SID of the desired user
NTAccount f = new NTAccount(userName);
SecurityIdentifier s = (SecurityIdentifier)f.Translate(typeof(SecurityIdentifier));
string sid = s.ToString();

// Now you can access to the HKEY_USERS root key
string path = @"SOFTWARE\Console\DefaultConfig";
Registry.Users.CreateSubKey(string.Format("{0}\\{1}", sid, path));

しかし正直なところ、私はそれがとても良いアイデアだとは思わない。代わりに Registry.LocalMachine を使用できませんでした。これはすべてのユーザーに適用されますか?

3
追加された
彼らのハイブは、現在ログインしている場合にのみロードされます。ユーザーがプログラムを初めて実行するときにキーを作成する方がよいでしょう。
追加された 著者 Luke,
可能ですが、お勧めできません。まず、レジストリハイブがロードされている間にそのユーザーがログインしようとすると、ハイブをロードして、デフォルトのユーザーハイブ(悪い経験)の一時コピーを取得できなくなります。第2に、移動プロファイルで問題が発生する可能性があります(データ損失など)。
追加された 著者 Luke,
OPが悪意のある何かをしようとしているのではないでしょうか?すべてのユーザーのレジストリキーを追加/変更する(ルーク氏は、初めてプログラムを実行したときやシステム全体の設定を使用する)、意図的に変更するのが難しいように思えますクリーンアウト/リバース...
追加された 著者 R..,
私はこれが本当に古い質問だと知っていますが、これは私の心にもなりました。私はアプリケーションのクリーンアンインストールを行うつもりなら、各ユーザーのアプリケーション関連のキーを削除しないことをお勧めしますか?
追加された 著者 GottZ,
気にしないで。 OpenSubKey()の2番目のパラメータとして Registry.Users.GetSubKeyNames()および true を使用して、空の鍵は私がきれいなアンインストールルーチンを気にします:D
追加された 著者 GottZ,
私はすべてのユーザーに設定を入れようとしていますが、実際にはプログラムを作成しませんでした(myprogramの名前は単なる目的のためです)。私は開始時に自動設定を行うことについて何もできません。いくつかのコンピュータを設定してください、コードはありがたいですが、もう1つ質問があります。ログインしていないときに他のユーザのレジストリを編集できないのはなぜですか?
追加された 著者 Jay Pua,
oops私はちょうど余分な投稿のために申し訳ありませんが、彼らがログインしていないとき、彼らのレジストリ/ "ハイブ"を編集することはできません第1のコメントを読んで?
追加された 著者 Jay Pua,