管理者権限を持っているか確認[C/C++] [開発環境]
管理者権限の有無によって処理を変える処理を行いたいので、管理者権限を持っているか確認する方法を調べた。
検索するとIsUserAnAdminを使う例がたくさん出てきたが自分の環境(Windows7)では管理者権限を確認できなかった。そこでCheckTokenMembershipを使う以下のコードを使ったら管理者権限を確認できた。
#include "stdafx.h"
#include <Windows.h>
BOOL IsAnAdmin(VOID)
{
BOOL b = FALSE;
SID_IDENTIFIER_AUTHORITY NtAuthority = SECURITY_NT_AUTHORITY;
PSID AdministratorsGroup;b = AllocateAndInitializeSid(
&NtAuthority,
2,
SECURITY_BUILTIN_DOMAIN_RID,
DOMAIN_ALIAS_RID_ADMINS,
0, 0, 0, 0, 0, 0,
&AdministratorsGroup);
if(b) {
if (!CheckTokenMembership( NULL, AdministratorsGroup, &b)) {
b = FALSE;
}
FreeSid(AdministratorsGroup);
}return(b);
}int _tmain(int argc, _TCHAR* argv[])
{
if(IsAnAdmin())
printf("管理者権限で起動しました\n");
else
printf("通常権限で起動しました\n");
getchar();return 0;
}
セキュリティ識別子(SID)を割り当て、最大8つの副権限(サブオーソリティ)を使って初期化します。
指定した SID(セキュリティ ID)がアクセストークン内で有効になっているかどうかを調べます。
「SID(Security Identifier。セキュリティ識別子)」と呼ばれる一意のID番号列を使用して管理されている。
参考サイト
- http://sideseeker.hateblo.jp/entry/2012/08/26/201846
- http://togarasi.wordpress.com/2009/02/25/administrator-%E6%A8%A9%E9%99%90%E3%82%92%E6%8C%81%E3%81%A3%E3%81%A6%E3%81%84%E3%82%8B%E3%81%8B%E7%A2%BA%E8%AA%8D%E3%81%97%E3%81%9F%E3%81%84/
- http://www.atmarkit.co.jp/fwin2k/win2ktips/307sid/sid.html
Canadian Healthcare Mall http://abuycialisb.com - п»їcialis Alli Sales And Canada <a href=http://abuycialisb.com>Buy Cialis</a> Comprar Viagra Sin Receta En Valencia
by LesGrealm (2020-02-12 10:14)
Alternative Viagra Products http://abcialisnews.com - Buy Cialis Vardenafil Online Pharmacy <a href=http://abcialisnews.com>п»їcialis</a> Propecia Kjope
by StevFelo (2020-03-04 10:28)
Viagra Efectos Jovenes http://apcialisle.com/# - п»їcialis Zithromax I.V. <a href=http://apcialisle.com/#>Cialis</a> Zithromax Sun Sensitivity
by MatgehasY (2020-03-04 17:56)
Propecia Worked For Me Thinning Hair <a href=https://apcialisle.com/#>Cialis</a> Veterinary Amoxicillin 250mg 5ml <a href=https://apcialisle.com/#>п»їcialis</a> Comment To Last Conseils Plus Longs
by Janinsany (2020-03-22 00:36)