Chinaunix首页 | 论坛 | 博客
  • 博客访问: 81584
  • 博文数量: 21
  • 博客积分: 1400
  • 博客等级: 上尉
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-29 10:03
文章分类
文章存档

2010年(21)

我的朋友

分类: WINDOWS

2010-08-18 14:24:25

诸如SetupCopyOEMInf等函数调用时需要管理员权限,否则会返回失败.那么在调用它们之前用下面的func来提升权限就行:
 
BOOL EnablePriv()
{
    HANDLE hToken;
    if ( OpenProcessToken(GetCurrentProcess(),TOKEN_ADJUST_PRIVILEGES,&hToken) )
    {
        TOKEN_PRIVILEGES tkp;
       
        if(!LookupPrivilegeValue( NULL,SE_DEBUG_NAME,&tkp.Privileges[0].Luid ))
            return FALSE;//修改进程权限
        tkp.PrivilegeCount=1;
        tkp.Privileges[0].Attributes=SE_PRIVILEGE_ENABLED;
        if(!AdjustTokenPrivileges( hToken,FALSE,&tkp,sizeof tkp,NULL,NULL ))
            return FALSE;//通知系统修改进程权限
        DWORD err = GetLastError( );
        //return( (GetLastError()==ERROR_SUCCESS) );
        return TRUE;
    }
    return FLASE;
}
阅读(1513) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~