4

私の C# コードでは、ユーザーを「管理者」グループに追加したいと考えています。Windows のドイツ語バージョンでは、そのグループは "Administratoren" と呼ばれ、おそらく他のローカル バージョンでは別の名前になっていると聞いています。

私のコードは、検索を行うときにハードコーディングされた文字列を渡します。

var context = new PrincipalContext( ContextType.Machine );
var group = GroupPrincipal.FindByIdentity( context, "Administrators" );

そのため、グループが実際に別の名前を持っていると壊れます。この MSDN の記事で、よく知られている SID のナットが見つかりました。実際にそれらを使用して問題を解決する方法がわかりません。

Windows OS の言語に依存しないローカル グループを見つけるにはどうすればよいですか?

4

1 に答える 1

4

これが役立つかどうかはわかりません。

using System.Security;
using System.Security.Principal;

......
SecurityIdentifier sid = new SecurityIdentifier("S-1-5-32-544");
string name = sid.Translate(typeof(NTAccount)).Value;
Console.WriteLine(name);

結果は

"BUILTIN\Administrators"

実験する他の値を見つけることができるこのページから SID を取得しました。

于 2012-08-06T09:11:52.377 に答える