C++ 如何在WMI查询中正确转义引号

C++ 如何在WMI查询中正确转义引号,c++,windows-7,automation,wmi,wql,C++,Windows 7,Automation,Wmi,Wql,我有下面的WMI查询,它在C:\test中创建文件时轮询: Select * From __InstanceCreationEvent Within 1 Where TargetInstance Isa "Cim_DirectoryContainsFile" and TargetInstance.GroupComponent="Win32_Directory.Name='C:\\test'" 我能够在wbemtest.exe中运行此操作,没有任何问题-以下是wbemtest的输出: 然而

我有下面的WMI查询,它在
C:\test
中创建文件时轮询:

Select * From __InstanceCreationEvent Within 1 
Where TargetInstance Isa "Cim_DirectoryContainsFile" 
and TargetInstance.GroupComponent="Win32_Directory.Name='C:\\test'"
我能够在
wbemtest.exe
中运行此操作,没有任何问题-以下是wbemtest的输出:

然而,当我尝试在CMD中运行
mofcomp myfile.mof
时,我得到了一个“不可解析的查询”错误。在.mof文件中,我的查询如下所示:

"Select * From __InstanceCreationEvent Within 1 "
"Where TargetInstance Isa \"Cim_DirectoryContainsFile\" "
"and TargetInstance.GroupComponent=\"Win32_Directory.Name=\"C:\\\\test\"\"";
"Select * From __InstanceCreationEvent Within 1 "
"Where TargetInstance Isa \"Cim_DirectoryContainsFile\" "
"and TargetInstance.GroupComponent=\"Win32_Directory.Name=\'C:\\\\test\'\"";
我真的不知道我的角色逃跑有什么问题。。。 我知道在WQL中我不需要连接字符串,所以我认为这不是问题所在。然而,我不知道我是否需要使用单引号或双引号,或者是否需要转义一组双引号中的单引号,或者双引号在一组引号中是否可用

关于这个细节的文档几乎不存在,因此如果有任何经验的人能帮助我,我将非常感激


谢谢

此筛选器可以这样编写:

"Select * From __InstanceCreationEvent Within 1 "
"Where TargetInstance Isa \"Cim_DirectoryContainsFile\" "
"and TargetInstance.GroupComponent=\"Win32_Directory.Name=\"C:\\\\test\"\"";
"Select * From __InstanceCreationEvent Within 1 "
"Where TargetInstance Isa \"Cim_DirectoryContainsFile\" "
"and TargetInstance.GroupComponent=\"Win32_Directory.Name=\'C:\\\\test\'\"";
这是毫无疑问的。有关此处发生的情况的更多详细信息,请参阅。似乎是
Notepad++
的某些问题干扰了这种格式设置

还要注意在过滤器字符串中使用单引号和双引号