NT AUTHORITY\Network Service
またはNT AUTHORITY\System
のいずれかのサービスによって生成されるプロセスがあります。そのプロセスを確認する必要があります。だから私は、このようなコードを書かれている:Nt Authority System SIDとの照合に失敗しました
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken)) {
GetTokenInformation(hToken, 1, 0, 0, &dwOut);
if (GetLastError() == ERROR_INSUFFICIENT_BUFFER) {
hTokenUser = (TOKEN_USER*)malloc(dwOut);
if (!GetTokenInformation(hToken, TokenUser, hTokenUser, dwOut, &dwOut))
return false;
}
else
return false;
PSID psid = NULL;
SID_IDENTIFIER_AUTHORITY ntAuth = SECURITY_NT_AUTHORITY;
AllocateAndInitializeSid(&ntAuth, 1, SECURITY_LOCAL_SYSTEM_RID, 0, 0, 0, 0, 0, 0, 0, &psid);
if (EqualSid(psid, hTokenUser->User.Sid)) {
bResult = TRUE;
}
}
は、だから私は何をすべきか、私は、現在のプロセストークンを取得し、私はGetTokenInfo
を使用して、それからSIDを取得し、その後、私はAllocateAndInitializeSid
を使用して、NT_AUTHORITY\System
SIDを作成し、私は2つを比較します値が一緒に、しかし、それは決して動作しません、プロセスがNT_AUTHORITY\System
チェックの下で実行されるとき、常に失敗しています。これはNT_AUTHORITY\System
SIDを取得してプロセスsidと比較する正しい方法ですか?
メモリリークがあり、エラーをチェックしていません。 – RbMm