Цель состоит в том, чтобы предотвратить уничтожение моего процесса учетными записями локальных пользователей. AFAIK, это достигается либо выполнением процесса от имени администратора, либо путем повышения целостности процесса.
В настоящее время я использую файл манифеста .exe для выполнения процесса с правами администратора. Мой пользователь имеет тип администратора и просто должен нажать «да» в приглашении UAC. Я хотел бы быть свободным от этих хлопот и повысить целостность моего процесса программно. Но в следующем отрывке SetTokenInformation()
имеет ошибку «Требуемая привилегия не удерживается клиентом». Я включил все привилегии, используя UserRights.ps1 , но он по-прежнему показывает ошибку.
#include <stdio.h>
#include <windows.h>
#include <malloc.h>
void failure(const char *message, const int line)
{
char buf[256] = { 0 };
FormatMessage(FORMAT_MESSAGE_FROM_SYSTEM | FORMAT_MESSAGE_IGNORE_INSERTS, NULL, GetLastError(), MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), (LPTSTR)&buf, sizeof(buf), NULL);
puts(buf);
exit(1);
}
int main(void)
{
HANDLE hToken;
if (OpenProcessToken(GetCurrentProcess(), TOKEN_ALL_ACCESS, &hToken) == 0)
failure("OpenProcessToken()", __LINE__);
ULONG cbSid = GetSidLengthRequired(1);
TOKEN_MANDATORY_LABEL tml = { { alloca(cbSid) } };
if (CreateWellKnownSid(WinHighLabelSid, NULL, tml.Label.Sid, &cbSid) == 0)
failure("CreateWellKnownSid()", __LINE__);
if (SetTokenInformation(hToken, TokenIntegrityLevel, &tml, sizeof(tml)) == 0)
failure("SetTokenInformation()", __LINE__);
CloseHandle(hToken);
getchar();
return 0;
}
Grant-UserRight DESKTOP-xxxxxxx\myusername SeTrustedCredManAccessPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeNetworkLogonRight
Grant-UserRight DESKTOP-xxxxxxx\myusername SeTcbPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeMachineAccountPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeIncreaseQuotaPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeInteractiveLogonRight
Grant-UserRight DESKTOP-xxxxxxx\myusername SeRemoteInteractiveLogonRight
Grant-UserRight DESKTOP-xxxxxxx\myusername SeBackupPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeChangeNotifyPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeSystemtimePrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeTimeZonePrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeCreatePagefilePrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeCreateTokenPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeCreateGlobalPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeCreatePermanentPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeCreateSymbolicLinkPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeDebugPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeEnableDelegationPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeRemoteShutdownPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeAuditPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeImpersonatePrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeIncreaseWorkingSetPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeIncreaseBasePriorityPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeLoadDriverPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeLockMemoryPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeBatchLogonRight
Grant-UserRight DESKTOP-xxxxxxx\myusername SeServiceLogonRight
Grant-UserRight DESKTOP-xxxxxxx\myusername SeSecurityPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeRelabelPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeSystemEnvironmentPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeManageVolumePrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeProfileSingleProcessPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeSystemProfilePrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeUndockPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeAssignPrimaryTokenPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeRestorePrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeShutdownPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeSyncAgentPrivilege
Grant-UserRight DESKTOP-xxxxxxx\myusername SeTakeOwnershipPrivilege