WMIC возвращает File Not Found при вызове из C ++ или VB - командная строка работает - PullRequest
0 голосов
/ 24 августа 2018

Вот мой код:

#define tcalloc(nCharacters) (TCHAR*)calloc(nCharacters,sizeof(TCHAR))
TCHAR *sCmdParam = tcalloc(1024);
StringCchCopy(sCmdParam, 1024,
    L"wmic.exe "
    "/NAMESPACE:\\\\root\\Microsoft\\SqlServer\\ComputerManagement14 PATH ServerNetworkProtocol WHERE ProtocolName='Tcp' CALL SetEnable");
DWORD dwPID = 0;
DWORD dwExit = ExecCmdAndWait(sCmdParam, 120, SW_HIDE, &dwPID);
_tprintf(L"%u\n",dwExit);
free(sCmdParam);
_getchar_nolock();
return 0;

(ExecCmdAndWait просто вызывает CreateProcess)

Если я запускаю команду wmic из командной строки в командной строке администратора, она работает правильно.

Чем отличается запуск от скомпилированной программы?

Он работает под администратором домена.

Я также попытался запустить его с «cmd.exe / c» перед «wmic», но это дало тот же результат.

Я также предварительно пробовал 'chdir' для c: \ windows \ syswow64 \ wbem и c: \ windows \ system32 \ wbem, оба не работали.

И я попытался позвонить из быстрой программы VB6, которая дала тот же результат.

...