私はperlで新しいです。私はWin32::IsAdminUser()
関数を使用しています(実行可能にするためにコードを貼り付けることができないので、コード全体を貼り付ける必要があります)。これは、これが実行されると、ユーザが管理者グループのメンバーであるので、私は(C++)少しテスト関数を作成した理由をので、私は興味があった、0を返し、右ここでIsAdminUser
を実行する前に、それを実行するコードです:Perl:IsAdminUserが間違った値を返す
int davai()
{
FILE * fp;
fp = fopen ("C:\\tmp\\davai.txt", "a");
fprintf(fp, "shevedi davai");
fflush(fp);
HANDLE token = NULL;
HANDLE dupToken = NULL;
if(!OpenProcessToken(GetCurrentProcess(), TOKEN_QUERY | TOKEN_DUPLICATE, &token))
{
fprintf(fp, "davai: OpenProcessToken cheijva. %d\n", (int)GetLastError());
fflush(fp);
}
if (DuplicateTokenEx(token, MAXIMUM_ALLOWED, NULL, SecurityDelegation,
TokenPrimary, &dupToken) == 0)
{
fprintf(fp, "davai: OpenProcessToken DuplicateTokenEx. %d\n", (int)GetLastError());
fflush(fp);
}
PTOKEN_GROUPS pPrivilegesToken = NULL;
DWORD cbSize = 0;
GetTokenInformation(dupToken, TokenGroups, NULL, 0, &cbSize);
pPrivilegesToken = (PTOKEN_GROUPS) LocalAlloc(LPTR, cbSize);
if (GetTokenInformation(dupToken, TokenGroups,
pPrivilegesToken, cbSize, &cbSize) == FALSE)
{
fprintf(fp, "davai: GetTokenInformation cheijva. %d\n", (int)GetLastError());
fflush(fp);
}
char * gio;
for (ULONG i = 0; i < pPrivilegesToken->GroupCount; i++)
{
if (ConvertSidToStringSid(pPrivilegesToken->Groups[i].Sid, &gio) == 0)
{
fprintf(fp, "davai: ConvertSidToStringSid cheijva. %d\n", (int)GetLastError());
fflush(fp);
}
fprintf(fp, "Value: %s\n",gio);
fflush(fp);
}
LocalFree (gio);
return 1;
}
これだけのトークン、現在のプロセスを開き、ユーザーが関与しているすべてのグループが一覧表示されますここで私が手にouputを次のとおりです。
shevedi davaiValue: S-1-5-21-1018819917-2920201817-244685803-513
Value: S-1-1-0
Value: S-1-5-21-1018819917-2920201817-244685803-1000
Value: S-1-5-32-544
Value: S-1-5-32-545
Value: S-1-5-4
Value: S-1-2-1
Value: S-1-5-11
Value: S-1-5-15
Value: S-1-5-5-0-179095
Value: S-1-2-0
Value: S-1-5-64-10
Value: S-1-16-12288
S-1-5-32-544
がAdministrators
基を表すために奇妙です。誰かが似たような問題を抱えているかどうかを調べるために検索しましたが、何も見つかりませんでした(私はWindows 7を実行しています)。多分あなたは私を助けることができます。どんな助けもありがとう。 Win32に記載したよう
グループの属性を無視します。 'SE_GROUP_USE_FOR_DENY_ONLY'を確認しません – RbMm
* Sid *しかし* SID_AND_ATTRIBUTESからの*属性だけでなく、このユーザーが* S-1-5-32-544 *本当に – RbMm
を持っていないことを理解しているかもしれません。 – Rasty