none
CSidクラスでログオン先を指定してSIDを作成する方法について RRS feed

  • 質問

  • お世話になっております。

    環境:VisualStudio2012 VC++

    対応OS:Windows7と8

    指定したアカウントのSIDを取得したく、ATLクラスのCSidを使用しようとしております。

    CSidクラスのメソッドに、LoadAccount()というものがあり、引数としてアカウント名、システム名が指定可能です。

    MSDNの説明とみると、引数名そのままで、アカウント名、システム名を指定可能との記載があります。

    システムを表す引数は、ログオン先(ドメイン名またはローカルコンピュータ名)というよりも、コンピュータ名を示すものと

    思われるため、ローカルログオンのときはいいのですが、ドメインログオンのときに、ドメインのコンピュータ名の取得が困難です。

    現在、アカウント名とログオン先は取得できているのですが、ログオン先では不可能なのでしょうか?

    また、可能だとすれば、どのようにログオン先を指定すればいいのでしょうか?

    CSidのMSDNの初めに説明に、「アカウント名とドメインが指定された CSid オブジェクト、または既存のセキュリティ識別子 (SID: Security Identifier) 構造体を更新します。」と記載があるため、可能とは思うのですが・・・

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



    • 編集済み ofen 2013年10月29日 3:41
    2013年10月29日 3:19

回答

  • pszAccountName = "domain_name\user_name"、pszSystem = NULL ではルックアップできないドメインだということでしょうか?

    • 回答としてマーク ofen 2013年10月29日 8:08
    2013年10月29日 7:24

すべての返信

  • pszAccountName = "domain_name\user_name"、pszSystem = NULL ではルックアップできないドメインだということでしょうか?

    • 回答としてマーク ofen 2013年10月29日 8:08
    2013年10月29日 7:24
  • HomeClosedさん、回答ありがとうございます。

    ちょうどこちらでも試していたのですが、「ドメイン名\アカウント名」と指定することで取得可能なようです。

    MSDNに「アカウント名」と記載されていたので、ドメインは指定してはいけないのかと思っていました。

    できればMSの公式な資料があればいいのですが、CSid、LookupAccountSidには記載がないようですが、

    なぜかLookupAccountNameだけに記載がありました。

    CSid::LoadAccount()は、内部でLookupAccountName()を呼び出しているため、

    この呼び出し方でいいようです。

    ※それなら、MSDNのLoadAccountの説明に、「LookupAccountSid参照」だけでなく、「LookupAccountName参照」も

    記載してほしいものですが ・・・

    以上で本件解決といたします。

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

    2013年10月29日 8:18