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*/);
}

 

 

 

 

posted @ 2010-06-03 17:24  谭志宇  阅读(178)  评论(0编辑  收藏  举报