none
NetUserGetLocalGroups()でSYSTEMアカウントのグループ情報取得について RRS feed

  • 質問

  • こんにちは。お世話になります。

    NetUserGetLocalGroups()でSYSTEMアカウントのグループ情報を取得しようとしたのですが、エラーが発生しグループ情報を取得できません。

    https://msdn.microsoft.com/ja-jp/library/cc447038.aspx

    上記URLのサンプルコードを参考にし、第一引数はNULL、第二引数は以下で動作させました。

    1.第二引数「SYSTEM」の場合:戻り値2221

    2.第二引数「NT AUTHORITY\system」の場合:戻り値2453

    当APIでSYSTEMアカウントのグループ情報は取得できないのでしょうか?

    宜しくお願いします。


    2016年6月13日 2:30

回答

  • 恐らく SYSTEM アカウント グループの情報は、この API では取れないのでは。。。と思います。
    (逆に、それが取れたらセキュリティ ホールになってしまう気がするのです。。。)

    NetUserGetLocalGroups() API の戻り値 2221 は NERR_UserNotFound を、2453 は NERR_DCNotFound をそれぞれ表しており、"SYSTEM" や "NT AUTHORITY\system" はいずれも User Name としては正しくないということなので、この API 自体が SYSTEM アカウント グループに対する問い合わせを許容していないんだと思います。
    "net localgroup" コマンドで調べても、Windows 8.1 までのプラットフォームでは SYSTEM アカウントに対応する Local Group は表示されませんし、Windows 10 で表示されるようなった "System Managed Accounts Group" でも、メンバ情報は全く表示されませんので、SYSTEM アカウント グループは特別な扱い。。。とうことなのでは?

    ちなみに。。。。
    カーネル デバッガを接続し、NetUserGetLocalGroups() API が呼び出されるタイミングを確認したところ、(私が調べた限りでは) この API がコールされるのは、コントロール パネルの <ユーザー アカウント> から "ユーザー アカウントの管理" を選択したときだけでした。
    (色々な UserName で複数回呼び出されていました。)
    Explorer から任意のファイルのセキュリティ情報ダイアログをオープンしても NetUserGetLocalGroups() API は全くコールされなかったので、SYSTEM アカウント グループの情報は、まったく別の方法で取得しているような気がします。
    • 回答としてマーク 星 睦美 2016年6月30日 8:15
    2016年6月14日 10:02