管理者権限について – プログラミング – Home

通知
すべてクリア

[解決済] 管理者権限について


なおぞう
 なおぞう
(@なおぞう)
ゲスト
結合: 9年前
投稿: 143
Topic starter  

お世話になります。よろしくお願いします。
VS2013 スタティックライブラリでMFC使用、Unicode文字セット、共通言語ランタイムサ
ポートしない。の環境で開発しております。

管理者だったら処理をしたい。ということで、管理者であるかの確認を、
AllocateAndInitializeSid() と、checkTokenMemberShip()を使って行うコードを用意
しました。

ULONG ulReturn = ERROR_SUCCESS;
BOOL bResult = TRUE;

SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;

// セキュリティID(SID)を取得する
bResult = AllocateAndInitializeSid(&NtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&AdministratorsGroup);

// アクセストークン内でのSIDの有効性を調べる
CheckTokenMembership(NULL, AdministratorsGroup, &bResult);
FreeSid(AdministratorsGroup);//SID解放

return bResult;

管理者権限を持つユーザで実行しているのですが、&bResultに0(SID無効)が入ってしま
います。どうしてなのか分からなくて困っています。

もしかして、Administratorというユーザアカウントでログインしていないと駄目なので
しょうか。

コードに間違いがあるなど、解決方法がありましたら教えていただけますようお願い致し
ます。


引用未解決
トピックタグ
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

BUILTIN\Administrators の SID が欲しいなら CreateWellKnownSid 関数でいいんじゃな
いでしょうか。
WellKnownSidType は WinBuiltinAdministratorsSid (26) で。

https://msdn.microsoft.com/en-us/library/windows/desktop/aa446585.aspx


返信引用
なおぞう
 なおぞう
(@なおぞう)
ゲスト
結合: 9年前
投稿: 143
Topic starter  

>aetos様

CreateWellKnownSid()関数を教えていただきありがとうございます。
AllocateAndInitializeSid()より新しい関数のようですね…。

今回は、SIDをとるところは問題なくて、そのSIDの有効性を確認するところで躓いています。
管理者権限を持つユーザの状態でプログラムを動かしているのに、CheckTokenMembership
で、無効が返ってきてしまうのです。

管理者権限「有効」という結果が欲しいのですが、それが取れない原因が分からなくて質
問させていただいています。
よろしくお願いします。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

掲示されたコードをそのままコピペで実行してみましたが、正常に判定できているようで
す。
見た感じ問題なさそうですし。

昇格実行(管理者として実行)していますか?


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

SHTestTokenMembership という関数もありました。
https://msdn.microsoft.com/en-us/library/windows/desktop/bb762256.aspx

より用途が限定された関数ですが、SID の作成・解放が必要ないので楽ちんです。


返信引用
なおぞう
 なおぞう
(@なおぞう)
ゲスト
結合: 9年前
投稿: 143
Topic starter  

>aetos様

今、こちらでもその(管理者権限で実行)事に気が付き、
DOSプロンプトを管理者権限で立ち上げて動作させることができました。

VS2013自体も「管理者権限で立ち上げ」があるんですね…気がつかなかったです。
これを使えばデバッグモードで動作確認もできますね。

SHTestTokenMembership につきましても情報ありがとうございます。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました