質問: プログラムで管理者アカウントを使用してレジストリ内の他のユーザーにキーを追加する c#(またはc/c ++または他の言語)を使用して、他のユーザーのレジストリに新しいキーを追加する方法 ここにシナリオがあります: クライアントPC:「管理者」アカウント(ログイン) 「ユーザーA」と「ユーザーB」は、ドメイン「myDomain」を介してのみクライアントPCにログインできます(既にログオンしており、クライアントPCのユーザーには独自のフォルダがあります) このコードを実行して管理者を使用して新しいキーを作成します > Registry.CurrentUser.CreateSubKey(@ "SOFTWARE \ myProgram \ DefaultConfig"); > > 問題は、このキーは「管理者」アカウント用にのみ作成されていることです 私は "管理者"アカウントを使用している間に "ユーザーA"と "ユーザーB"のこのキーを作成したい 「ユーザーA」と「ユーザーB」の両方がHKEY_USERSに表示されません。 同じPCにもっと多くのユーザーがいて、このレジストリキーを追加したい場合は、すべてのユーザーにキーを追加するコードをループすることも可能ですか?ループを読み書きしますか?
回答: すべてのユーザーのキーは `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` を使用できませんでした。これはすべてのユーザーに適用されますか?