从vc ++程序

时间:2018-03-30 06:48:17

标签: windows winapi cmd createprocess powercfg

我试图从vc ++程序中获取powercfg -requests命令的输出。但是,它提供的输出与我在cmd.exe中手动执行命令时给出的输出完全不同。

我尝试搜索它并意识到当cmd.exe和powercfg.exe存在于" \ Windows \ System32"中时,我得到了正确的输出。当cmd.exe和powercfg.exe出现在" \ Windows \ SysWOW64"中时,获取不同/不需要的输出使用。

我尝试使用CreateProcess并给出两者的绝对路径,如下所示:

STARTUPINFO si = { sizeof(STARTUPINFO) };
PROCESS_INFORMATION pi;
printf("infoBuf : %S\n",infoBuf);
wchar_t cmdline[] = L"C:\\Windows\\System32\\cmd.exe /K C:\\Windows\\System32\\powercfg.exe -requests
wchar_t path[] = L"C:\\Windows\\System32\\cmd.exe";

if (!CreateProcess(path, cmdline, NULL, NULL, false, CREATE_UNICODE_ENVIRONMENT,
   NULL, NULL, &si, &pi))
{
    std::cout << GetLastError();
    abort();
}

CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);

但是编译后的可执行文件仍然会输出类似于64位cmd.exe和powercfg.exe的输出。

我错过了什么吗?我如何明确设置并确保我的程序只应使用32位版本的cmd.exe和powercfg.exe。

0 个答案:

没有答案