这是我的代码:
#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程序进行调用,该程序给出了相同的结果。