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

 

 

 

 

你可能感兴趣的:(vi)