編集: oScopeを追加
ワイルドカードを使用せずにクエリを実行すると、期待どおりの結果が返されます。しかし、クエリを少し変更すると、エラーはスローされません。代わりに、何も返さないため、偽陰性になります。
以下のコードは 0 行を返します。
ManagementScope oScope = new ManagementScope("\\\\" + txtHostName +
"\\root\\CIMV2", oConn);
string wheresub = "FileName Like '%myfile%'";
ObjectQuery oQuery = new ObjectQuery(@"SELECT * FROM CIM_DataFile WHERE (" +
wheresub + ") AND (Drive = 'C:' OR Drive = 'D:' OR Drive = 'E:')");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(oScope, oQuery);
Log("Searching...");
foreach (ManagementObject queryObj in searcher.Get())
{
FilesFound++;
Log(String.Format("--> {0}{1}{2}.{3}", queryObj["Drive"], queryObj["Path"], queryObj["FileName"], queryObj["Extension"]));
}
if (FilesFound > 0)
{
Log(" " + FilesFound + " files found.");
}
else
{
Log(" Clean.");
}
このコード スライスは、常に「Clean」を返します。しかし、特定のファイルを見つけるために 1 行を変更すると、特定のファイルが 1 つ見つかります。
string wheresub = "FileName = 'PROCID_myfile_1234'";
特定のファイルだけでなく、可能なすべてのファイルを見つけることができるように、ワイルドカード バージョンが必要です。私は何を間違っていますか?