首页 > 解决方案 > 从 C++ 或 VB 调用时,WMIC 返回未找到文件 - 命令行有效

问题描述

这是我的代码:

#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 程序中调用,结果相同。

标签: c++sql-serverwmiwmicwmi-query

解决方案


推荐阅读