1
私はthisを使用しようとしましたが、is32Bitでエラーが発生します32ビットQtアプリケーションから64ビットレジストリ値を取得するには?
私はthisを使用しようとしましたが、is32Bitでエラーが発生します32ビットQtアプリケーションから64ビットレジストリ値を取得するには?
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;