用c ++代码调用WMIC命令

时间:2012-11-19 07:25:31

标签: c++ dll batch-file wmi wmic

我正在尝试将我用批处理脚本编写的逻辑重写为c ++代码和DLL。

在我的批处理脚本中,我正在使用WMIC检查所有java进程的命令行参数。这是脚本 -

FOR /F "tokens=*" %%A IN ('2^>nul wmic process where^(name^="java.exe"^) get commandline ^| Findstr "XYZ"') DO SET Var=%%A 
IF DEFINED Var  (
cscript MessageBox.vbs "Message IN POP-UP."  
GOTO :EOF
)
FOR /F "tokens=*" %%A IN ('2^>nul wmic process where^(name^="javaw.exe"^) get commandline ^| Findstr "XYZ"') DO SET Var=%%A 
IF DEFINED Var (
cscript MessageBox.vbs "Message IN POP-UP."
GOTO :EOF
)

我想重复使用相同的WMIC逻辑,但现在在c ++代码中。基本上我想避免使用vb scipt弹出窗口,我将使用一些c ++命令调用“消息IN POP-UP ”。

任何起点?我可以使用system()调用但是我如何进行检查,就像我在批处理脚本中的IF条件中写的一样。

1 个答案:

答案 0 :(得分:0)

对于简单但难看的解决方法,您可以尝试“按文件”传递查询 使用wmic,适用于控制台。

请注意,每次执行新的system()命令时都会显示一个控制台

所以你使用system(“你的查询在wmic> youroutputfile.format”)并通过你的c ++检索

如果您的查询稍微复杂,您也可以执行批处理文件

这里有一个例子:

system("wmic csproduct get name, identifyingnumber, uuid > c:\Temp\test.test"); wstring Return = MyReadingClass(L"c:\\Temp\\test.test").Read();

wmic为您提供简洁性,这是您应该首先寻求的。

这种方法非常简单明了,但由于硬盘限制+写入/读取操作+系统安全操作,实时过程非常慢。