2016-05-30 11 views

答えて

0

osが32ビットであるかどうかを確認する機能がありません。

私は最終的にチェックOS 64ビットのための機能を発見したかどうか

#include <windows.h> 
#include <tchar.h> 

typedef BOOL (WINAPI *LPFN_ISWOW64PROCESS) (HANDLE, PBOOL); 

LPFN_ISWOW64PROCESS fnIsWow64Process; 

BOOL IsWow64() 
{ 
    BOOL bIsWow64 = FALSE; 

    fnIsWow64Process = (LPFN_ISWOW64PROCESS) GetProcAddress(
     GetModuleHandle(TEXT("kernel32")),"IsWow64Process"); 

    if(NULL != fnIsWow64Process) 
    { 
     if (!fnIsWow64Process(GetCurrentProcess(),&bIsWow64)) 
     { 
      //handle error 
     } 
    } 
    return bIsWow64; 
} 

QString reg32 = qgetenv("windir")+"\\SysWOW64\\reg.exe"; 
QString reg64 = qgetenv("windir")+ "\\sysnative\\reg.exe"; 


QString command = tr("%1 DELETE \"HKLM\\SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\SharedDLLs\" /v \"%2\" /f") 
.arg( IsWow64() == true ? reg64 : reg32 ); 

QProcess *process = new QProcess(this); 
    process->start(command); 


    if (process->waitForStarted()) 
    { 
     process->waitForFinished(); 
     QString l = process->readAllStandardOutput().simplified(); 


     // Something Cool 

    } else 
     qDebug() << process->readAllStandardError().simplified(); 

delete process; 
関連する問題