// hProcess [in] : 要提升的进程,目标进程
// lpPrivilegeName [in] : 要提升到的特权,目标特权
// 返回值 : TRUE : 成功; FALSE : 失败

BOOL UpdateProcessPrivilege( HANDLE hProcess, LPCTSTR lpPrivilegeName = SE_DEBUG_NAME )
{
      HANDLE hToken;
      if ( ::OpenProcessToken( hProcess, TOKEN_ALL_ACCESS, &hToken ) ) 
      {
            LUID destLuid;
            if ( ::LookupPrivilegeValue( NULL, lpPrivilegeName, &destLuid ) ) 
            {
                  TOKEN_PRIVILEGES TokenPrivileges;
                  TokenPrivileges.PrivilegeCount = 1;
                  TokenPrivileges.Privileges[0].Attributes = SE_PRIVILEGE_ENABLED;
                  TokenPrivileges.Privileges[0].Luid = destLuid;
                  int iResult;
                  if ( iResult = ::AdjustTokenPrivileges( hToken, FALSE, &TokenPrivileges, 0, NULL, NULL ) ) 
                  {
                        return TRUE;    
                  }
            }
      }
      return FALSE;
}
Posted on 2005-12-15 13:35 艾凡赫 阅读(1210) 评论(0)  编辑 收藏 引用 所属分类: MFC技术

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理