c++ - 从 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 程序中调用,结果相同。
解决方案
推荐阅读
- java - 在大堆上使用并行收集器的次要收集时间极长
- android - 如何减少自定义贴纸应用程序的文件大小
- node.js - Watson 语音转文本未触发回调
- dart - 创建页面时未调用异步函数
- excel - 使用 Excel VBA 引用路径和单元格公式打开 Windows 资源管理器
- spring-boot - 带有 url 参数的 Kubernetes 入口路由
- java - 如何增加 Flink 内存大小
- amazon-web-services - 有没有办法在 Dynamo DB 控制台中设置您的默认区域?我的总是在错误的区域打开
- r - foverlaps 与 mult="last" (或“first”)是确定性的吗?
- git - 如何将文件从另一个 Commit us git difftool 复制到我的工作树中?