代码之家  ›  专栏  ›  技术社区  ›  Bill Paxtonn

在没有uac提示的情况下提高进程完整性

  •  -3
  • Bill Paxtonn  · 技术社区  · 8 年前

    目标是防止本地用户帐户终止我的进程。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
    1 回复  |  直到 8 年前
        1
  •  2
  •   catnip    8 年前

    我想你会发现这种行为是故意的。如果任何进程可以在一瞬间悄悄地运行,那么会有什么安全性呢?