目标是防止本地用户帐户终止我的进程。afaik,这可以通过以管理员身份执行流程或提高流程的完整性来实现。
目前,我正在使用.exe的清单文件以管理员权限执行该进程。我的用户是administrator类型,只需在uac提示符下单击“yes”。我想摆脱这种麻烦,并提高我的程序的完整性编程。但在下面的摘录中,
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