none
コンピュータアカウントでのロール RRS feed

  • 質問

  • VS 2010を使用しています。

    使用しているユーザが指定しているロールに属しているかは、MSDNの例で確認できました。

    AppDomain.CurrentDomain.SetPrincipalPolicy(PrincipalPolicy.WindowsPrincipal);
    IPrincipal principal = Thread.CurrentPrincipal;
    IIdentity identity = principal.Identity;
    
    string strRole = "hoge.local\\hoge Users";
    bool isResult = principal.IsInRole(strRole);
    Console.WriteLine("{0} は {1} ロールに所属していま{2}。",
    	identity.Name,
    	strRole,
    	isResult ? "す" : "せん");
    

    使用しているコンピュータが指定したロールに属しているかを確認することはできますでしょうか。

    // hoge Computersには、コンピュータが登録されている。
    string strRole = "hoge.local\\hoge Computers";
    bool isResult = principal.IsInRole(strRole);
    

    IPrincipalに現在使用しているコンピュータアカウントを指定できるのでしょうか。

    よろしくお願い致します。

    2010年9月22日 8:26

回答

すべての返信

  • AD のことはあまりわからないのですが、
    グループに属していることの判定でしたら次のサイトに方法が書いてありました。

    http://stackoverflow.com/questions/1613645/ask-activedirectory-if-a-machine-is-a-member-of-a-group

    (ComputerPrincipal の GetGroups メソッドを使う方法です。
    ループしなくても IsMemberOf メソッドが使えるのではと思ったのですが、なぜか期待する結果にはなりませんでした。)

    はずしていたらすみません。

    • 回答としてマーク myoko2 2010年9月24日 8:13
    2010年9月24日 4:48
  • TH01さん

    有用な情報を有難うございました。
    IsMemberOfでの動作も確認しました。

    IsMemberOfではGroupが入れ子に成っている場合、検索が行えないようです。参考のサイトで行っているように直接所属するGroupを取得し再帰的な検索を行えば可能なようです。

    ありがとうございました。

    2010年9月24日 8:13