Мне нужно проверить все процессы на группу Администратор из ядра. Сделал перебор, открываю процесс, открываю Token, а как дальше по описанию Token проверить не разобрался. Полная лажа. Из пользовательского знаю, а в режиме ядра не понимаю. Мне нужно только от места где я сделал status=ZwOpenProcess(&hProcess, PROCESS_ALL_ACCESS,&attr,&p->Threads[0].ClientId); if (status==STATUS_SUCCESS) status=ZwOpenProcessToken(hProcess,TOKEN_QUERY,&hToken); а как дальше проверить принадлежит процесс Администратору или нет незнаю. SeTokenIsAdmin (hToken) не работает. В BSOD выкидывает, наверное Level ниже чем у меня. Может, кто знает как этот код на Visual Basic переделать под ядро. Здесь вроде всё есть но переделать не получается: Private Function IsAdministrator() As Long Dim hProcessID As Long Dim hToken As Long Dim res As Long Dim cbBuff As Long Dim tiLen As Long Dim TG As TOKEN_GROUPS Dim SIA As SID_IDENTIFIER_AUTHORITY Dim lSid As Long Dim cnt As Long Dim sAcctName1 As String Dim sAcctName2 As String Dim cbAcctName As Long Dim sDomainName As String Dim cbDomainName As Long Dim peUse As Long tiLen = 0 hProcessID = GetCurrentProcess() If hProcessID <> 0 Then If OpenProcessToken(hProcessID, TOKEN_READ, hToken) = 1 Then res = GetTokenInformation(hToken, _ TokenGroups, _ TG, _ tiLen, _ cbBuff) If res = 0 And cbBuff > 0 Then tiLen = cbBuff res = GetTokenInformation(hToken, _ TokenGroups, _ TG, _ tiLen, _ cbBuff) If res = 1 And tiLen > 0 Then SIA.Value(5) = SECURITY_NT_AUTHORITY res = AllocateAndInitializeSid(SIA, 2, _ SECURITY_BUILTIN_DOMAIN_RID, _ DOMAIN_ALIAS_RID_ADMINS, _ 0, 0, 0, 0, 0, 0, _ lSid) If res = 1 Then sAcctName1 = Space$(255) sDomainName = Space$(255) cbAcctName = 255 cbDomainName = 255 res = LookupAccountSid(vbNullString, _ lSid, _ sAcctName1, _ cbAcctName, _ sDomainName, _ cbDomainName, _ peUse) If res = 1 Then For cnt = 0 To TG.GroupCount - 1 sAcctName2 = Space$(255) sDomainName = Space$(255) cbAcctName = 255 cbDomainName = 255 res = LookupAccountSid(vbNullString, _ TG.Groups(cnt).Sid, _ sAcctName2, _ cbAcctName, _ sDomainName, _ cbDomainName, _ peUse) If sAcctName1 = sAcctName2 Then IsAdministrator = True Exit For End If Next End If FreeSid ByVal lSid End If CloseHandle hToken End If End If End If CloseHandle hProcessID End If End Function