WMI Search Wildcard ничего не возвращает - PullRequest
1 голос
/ 07 декабря 2011

РЕДАКТИРОВАТЬ: Добавлен oScope

Когда я запускаю свой запрос без подстановочных знаков, он возвращает то, что я ожидал.Но если я немного изменю запрос, он не выдаст ошибок.Вместо этого он просто ничего не возвращает, давая мне ложноотрицательный результат.

Приведенный ниже код возвращает нулевые строки:

    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.");
    }

Этот фрагмент кода всегда возвращает «Очистить».Но если я изменю ОДНУ строчку, чтобы найти конкретный файл, он найдет один конкретный файл:

string wheresub = "FileName = 'PROCID_myfile_1234'";

Мне нужна версия с подстановочными знаками, чтобы я мог найти все возможные файлы, а не только конкретный,Что я делаю не так?

...