У меня есть следующее command
, которое читает ОС имя данных из реестра следующим образом:
for /f "tokens=2*" %a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName ^| findstr "REG_"') do @echo %b
output : Windows 10 Enterprise
Так что теперь эта команда работает в Командная строка , но когда я использую ее в функции system()
, она не выполняется должным образом.
My code
:
CHAR szCommandLine[MAX_PATH * 4] = { 0 };
StrCpyA(szCommandLine, "for /f \"tokens = 2*\" %%a in ('reg query \"HKEY_LOCAL_MACHINE\\SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\" /v ProductName ^| findstr \"REG_\"') do @echo %%b");
// print the command
printf(szCommandLine);
printf("\n");
// run the command
system(szCommandLine);
Вывод:
for /f "tokens=2*" %a in ('reg query "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion" /v ProductName ^| findstr "REG_"') do @echo %b
%%a was unexpected at this time.
Сейчас я не знаюименно то, что происходит в system()
функции, которые ведут себя как неправильно command
.На самом деле напечатанная command
в моей программе - это точно та же команда, которая корректно выполнялась в Командная строка .