0

我正在尝试从 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 的输出。

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

4

0 回答 0