zoukankan      html  css  js  c++  java
  • Vista 提升权限

    代码
    // 启动Shell    
    OSVERSIONINFOEX OSVerInfo;    
    OSVerInfo.dwOSVersionInfoSize 
    = sizeof(OSVERSIONINFOEX);    
    if(!GetVersionEx((OSVERSIONINFO *)&OSVerInfo))    
    {    
             OSVerInfo.dwOSVersionInfoSize 
    = sizeof(OSVERSIONINFO);    
             GetVersionEx((OSVERSIONINFO 
    *)&OSVerInfo);    
    }    
      
    TCHAR atszVerb[
    16];    
    if(OSVerInfo.dwMajorVersion >= 6// Vista 以上    
    {    
             _tcscpy(atszVerb,_T(
    "runas"));    
    }    
    else    
    {    
             _tcscpy(atszVerb,_T(
    ""));    
    }    
      
    USES_CONVERSION;    
      
    SHELLEXECUTEINFO se ;    
    memset(
    &se,0,sizeof(SHELLEXECUTEINFO));    
    se.cbSize 
    = sizeof(SHELLEXECUTEINFO);    
    se.lpVerb 
    = atszVerb;    
    se.lpFile 
    = W2T(m_bstrShellExe);    
    se.lpParameters 
    = atszBootCmd;    
    se.nShow 
    = SW_HIDE ;    
    se.fMask 
    = SEE_MASK_NOCLOSEPROCESS ;    
      
    if(ShellExecuteEx(&se))    
    {    
            
    // 启动成功    
    }    
    else    
    {    
            
    // 启动失败,可能UAC没有获得用户许可    
    }  
     
    // 进程权限不同 通讯
    typedef BOOL (WINAPI FAR *ChangeWindowMessageFilter_PROC)(UINT,DWORD);
    ChangeWindowMessageFilter_PROC m_pfnChangeWindowMessageFilter;
    m_pfnChangeWindowMessageFilter = (ChangeWindowMessageFilter_PROC)::GetProcAddress (::GetModuleHandle(_T("USER32")),"ChangeWindowMessageFilter");
    if (m_pfnChangeWindowMessageFilter)
    {
     m_pfnChangeWindowMessageFilter(WM_COPYDATA, 1/*Add*/);
    }

     

  • 相关阅读:
    CLR via C# 3rd Edition下载
    SQL中的CASE WHEN语句
    为何要写注释?
    插件购票的公平性分析
    数据查询
    国产操作系统的市场运作策略
    0/0=2?
    为什么0.1无法被二进制小数精确表示?
    .net 可能要遭到取缔
    思考问题要先注意主体
  • 原文地址:https://www.cnblogs.com/chengxin1982/p/1750925.html
Copyright © 2011-2022 走看看