特权常量(授权)

BOOL EnablePrivilege()
{
    LUID PrivilegeRequired ;
    DWORD dwLen = 0, iCount = 0;
    BOOL bRes = FALSE;
    HANDLE hToken = NULL;
    BYTE *pBuffer = NULL;
    TOKEN_PRIVILEGES* pPrivs = NULL;
    bRes = LookupPrivilegeValue(NULL, SE_DEBUG_NAME, &PrivilegeRequired);
    if( !bRes) return FALSE;
    
    bRes = OpenThreadToken(GetCurrentThread(), TOKEN_QUERY | TOKEN_ADJUST_PRIVILEGES, TRUE, &hToken); 
    if(!bRes) return FALSE;
    bRes = GetTokenInformation(hToken, TokenPrivileges, NULL, 0, &dwLen);
    if (TRUE == bRes)
    {
        CloseHandle(hToken);
        return FALSE;
    }
    pBuffer = HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwLen);
    if(NULL == pBuffer) return FALSE;
    
    if (!GetTokenInformation(hToken, TokenPrivileges, pBuffer, dwLen, &dwLen)) 
    {
        CloseHandle(hToken);
        HeapFree(GetProcessHeap(), 0, pBuffer);
        return FALSE;
    }
    // Iterate through all the privileges and enable the one required
    bRes = FALSE;
    pPrivs = (TOKEN_PRIVILEGES*)pBuffer;
    for(iCount = 0; iCount < pPrivs->PrivilegeCount; iCount++)
    {
        if (pPrivs->Privileges[iCount].Luid.LowPart == PrivilegeRequired.LowPart &&
          pPrivs->Privileges[iCount].Luid.HighPart == PrivilegeRequired.HighPart )
        {
            pPrivs->Privileges[iCount].Attributes |= SE_PRIVILEGE_ENABLED;
            // here it's found
            bRes = AdjustTokenPrivileges(hToken, FALSE, pPrivs, dwLen, NULL, NULL);
            break;
        }
    }
    CloseHandle(hToken);
    HeapFree(GetProcessHeap(), 0, pBuffer);    
    return bRes;
}


常量/值说明
  • SE_ASSIGNPRIMARYTOKEN_NAME

  • TEXT("SeAssignPrimaryTokenPrivilege")

分配进程的主令牌所必需的。
用户权限:替换进程级令牌。
  • SE_AUDIT_NAME

  • TEXT("SeAuditPrivilege")

生成审核日志条目所必需的。 向安全的服务器提供此权限。
用户权限:生成安全性审核。
  • SE_BACKUP_NAME

  • TEXT("SeBackupPrivilege")

执行备份操作所必需的。 此权限会导致系统向任何文件授予全部读取访问控制,而不考虑为该文件指定的访问控制列表 (ACL)。 除读取以外的任何访问请求仍使用 ACL 进行评估。 RegSaveKey 和 RegSaveKeyEx 函数需要此权限。 如果保留此权限,则会授予以下访问权限:
  • READ_CONTROL

  • ACCESS_SYSTEM_SECURITY

  • FILE_GENERIC_READ

  • FILE_TRAVERSE

用户权限:备份文件和目录。
如果文件位于可移动驱动器上并启用了“审核可移动存储”,则需要 SE_SECURITY_NAME 才能拥有 ACCESS_SYSTEM_SECURITY。
  • SE_CHANGE_NOTIFY_NAME

  • TEXT("SeChangeNotifyPrivilege")

接收有关文件或目录更改的通知所必需的。 此权限还会导致系统跳过所有遍历访问检查。 默认为所有用户启用该权限。
用户权限:绕过遍历检查。
  • SE_CREATE_GLOBAL_NAME

  • TEXT("SeCreateGlobalPrivilege")

在终端服务会话期间在全局命名空间中创建命名文件映射对象时所必需的。 默认为管理员、服务和本地系统帐户启用此特权。
用户权限:创建全局对象。
  • SE_CREATE_PAGEFILE_NAME

  • TEXT("SeCreatePagefilePrivilege")

创建分页文件所必需的。
用户权限:创建页面文件。
  • SE_CREATE_PERMANENT_NAME

  • TEXT("SeCreatePermanentPrivilege")

创建永久对象所必需的。
用户权限:创建永久共享对象。
  • SE_CREATE_SYMBOLIC_LINK_NAME

  • TEXT("SeCreateSymbolicLinkPrivilege")

创建符号链接所必需的。
用户权限:创建符号链接。
  • SE_CREATE_TOKEN_NAME

  • TEXT("SeCreateTokenPrivilege")

创建主令牌所必需的。
用户权限:创建令牌对象。
不能将此权限添加到设置了“创建令牌对象”策略的用户帐户。 此外,不能使用 Windows API 将此权限添加到拥有的进程。Windows Server 2003 和 Windows XP with SP1 及更早版本:Windows API 可将此权限添加到拥有的进程。

  • SE_DEBUG_NAME

  • TEXT("SeDebugPrivilege")

必须提供此常量才能调试和调整另一帐户拥有的进程的内存。
用户权限:调试程序。
  • SE_DELEGATE_SESSION_USER_IMPERSONATE_NAME

  • TEXT("SeDelegateSessionUserImpersonatePrivilege")

获取同一会话中其他用户的模拟令牌时所必需的。
用户权限:模拟其他用户。
  • SE_ENABLE_DELEGATION_NAME

  • TEXT("SeEnableDelegationPrivilege")

将用户和计算机帐户标记为“受信任且可用于委派”时所必需的。
用户权限:启用要信任的用于委派的计算机和用户帐户。
  • SE_IMPERSONATE_NAME

  • TEXT("SeImpersonatePrivilege")

模拟所必需的。
用户权限:身份验证后模拟客户端。
  • SE_INC_BASE_PRIORITY_NAME

  • TEXT("SeIncreaseBasePriorityPrivilege")

提高进程的基优先级所必需的。
用户权限:提高计划优先级。
  • SE_INCREASE_QUOTA_NAME

  • TEXT("SeIncreaseQuotaPrivilege")

增加分配给进程的配额时所必需的。
用户权限:调整进程的内存配额。
  • SE_INC_WORKING_SET_NAME

  • TEXT("SeIncreaseWorkingSetPrivilege")

为在用户上下文中运行的应用程序分配更多内存时所必需的。
用户权限:增加进程工作集。
  • SE_LOAD_DRIVER_NAME

  • TEXT("SeLoadDriverPrivilege")

必须提供此常量才能加载或卸载设备驱动程序。
用户权限:加载和卸载设备驱动程序。
  • SE_LOCK_MEMORY_NAME

  • TEXT("SeLockMemoryPrivilege")

在内存中锁定物理页所必需的。
用户权限:在内存中锁定页。
  • SE_MACHINE_ACCOUNT_NAME

  • TEXT("SeMachineAccountPrivilege")

创建计算机帐户所必需的。
用户权限:将工作站添加到域。
  • SE_MANAGE_VOLUME_NAME

  • TEXT("SeManageVolumePrivilege")

启用卷管理权限所必需的。
用户权限:执行卷维护任务。
  • SE_PROF_SINGLE_PROCESS_NAME

  • TEXT("SeProfileSingleProcessPrivilege")

收集单个进程的分析信息所必需的。
用户权限:分析单个进程。
  • SE_RELABEL_NAME

  • TEXT("SeRelabelPrivilege")

修改对象的强制性完整性级别所必需的。
用户权限:修改对象标签。
  • SE_REMOTE_SHUTDOWN_NAME

  • TEXT("SeRemoteShutdownPrivilege")

使用网络请求关闭系统时所必需的。
用户权限:从远程系统强制关机。
  • SE_RESTORE_NAME

  • TEXT("SeRestorePrivilege")

执行还原操作所必需的。 此权限会导致系统向任何文件授予全部写入访问控制,而不考虑为该文件指定的 ACL。 除写入以外的任何访问请求仍使用 ACL 进行评估。 此外,通过此权限,可将任何有效的用户或组 SID 设置为文件的所有者。 RegLoadKey 函数需要此权限。 如果保留此权限,则会授予以下访问权限:
  • WRITE_DAC

  • WRITE_OWNER

  • ACCESS_SYSTEM_SECURITY

  • FILE_GENERIC_WRITE

  • FILE_ADD_FILE

  • FILE_ADD_SUBDIRECTORY

  • DELETE

用户权限:还原文件和目录。
如果文件位于可移动驱动器上并启用了“审核可移动存储”,则需要 SE_SECURITY_NAME 才能拥有 ACCESS_SYSTEM_SECURITY。
  • SE_SECURITY_NAME

  • TEXT("SeSecurityPrivilege")

执行许多与安全相关的功能(例如控制和查看审核消息)时所必需的。 此特权将其持有者标识为安全操作员。
用户权限:管理审核和安全日志。
  • SE_SHUTDOWN_NAME

  • TEXT("SeShutdownPrivilege")

关闭本地系统所必需的。
用户权限:关闭系统。
  • SE_SYNC_AGENT_NAME

  • TEXT("SeSyncAgentPrivilege")

域控制器使用轻型目录访问协议目录同步服务时所必需的。 此特权使持有者能够读取目录中的所有对象和属性,而不考虑对对象和属性施加了何种保护。 默认情况下,该权限会分配给管理员和域控制器上的 LocalSystem 帐户。
用户权限:同步目录服务数据。
  • SE_SYSTEM_ENVIRONMENT_NAME

  • TEXT("SeSystemEnvironmentPrivilege")

对使用此类型的内存来存储配置信息的系统的非易失性 RAM 进行修改时所必需的。
用户权限:修改固件环境值。
  • SE_SYSTEM_PROFILE_NAME

  • TEXT("SeSystemProfilePrivilege")

收集整个系统的分析信息所必需的。
用户权限:分析系统性能。
  • SE_SYSTEMTIME_NAME

  • TEXT("SeSystemtimePrivilege")

修改系统时间所必需的。
用户权限:更改系统时间。
  • SE_TAKE_OWNERSHIP_NAME

  • TEXT("SeTakeOwnershipPrivilege")

在未被授予任意性访问权限的情况下获取对象所有权所必需的。 此特权仅允许将所有者值设置为持有者作为对象所有者可适当分配的值。
用户权限:获得文件或其他对象的所有权。
  • SE_TCB_NAME

  • TEXT("SeTcbPrivilege")

此特权将其持有者标识为受信任的计算机基的一部分。 会向某些受信任且受保护的子系统授予此权限。
用户权限:充当操作系统的一部分。
  • SE_TIME_ZONE_NAME

  • TEXT("SeTimeZonePrivilege")

调整与计算机内部时钟关联的时区所必需的。
用户权限:更改时区。
  • SE_TRUSTED_CREDMAN_ACCESS_NAME

  • TEXT("SeTrustedCredManAccessPrivilege")

作为受信任的呼叫方访问凭据管理器时所必需的。
用户权限:作为受信任的呼叫方访问凭据管理器。
  • SE_UNDOCK_NAME

  • TEXT("SeUndockPrivilege")

取消停靠笔记本电脑所必需的。
用户权限:从扩展坞中移除计算机。
  • SE_UNSOLICITED_INPUT_NAME

  • TEXT("SeUnsolicitedInputPrivilege")

终端设备读取未经请求的输入时所必需的。
用户权限:不适用。


打赏

0 评论

发表评论