从C ++或VB调用时,WMIC返回“找不到文件”-命令行有效

时间:2018-08-24 11:34:52

标签: c++ sql-server wmi wmic wmi-query

这是我的代码:

#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命令,它将正常工作。

与从已编译程序运行它有什么不同?

它在域管理员下运行。

我也尝试在'wmic'前面用“ cmd.exe / c”运行它,但是结果相同。

我还事先尝试了'chdir'到c:\ windows \ syswow64 \ wbem和c:\ windows \ system32 \ wbem,但这两个都不起作用。

然后我尝试从快速的VB6程序进行调用,该程序给出了相同的结果。

0 个答案:

没有答案