ManagementObjectSearcher не находит сетевой диск с помощью фильтра логического диска в VS - PullRequest
0 голосов
/ 02 августа 2020

Попытка захватить серийный номер удаленного диска. PowerShell выведет список подключенных сетевых дисков с помощью Win32_LodicalDisk; Windows Management Instrumentation Tester выводит список дисков; Диск указан в HKCU \ Network; Но запуск ManagementObjectSearcher в модуле C# в VS находит все остальные логические диски, но единственный подключенный диск, который у меня есть.

Некоторые другие успехи с WMI были вызваны открытием брандмауэра для локального ввода WMI на удаленном P C, который представляет собой ноутбук. Но до сих пор нет обнаружения машины как подключенного устройства. Также попробовал выполнить релиз и использовать исполняемый файл для разрядности P C вместо любого P C.

        ConnOpt = new ConnectionOptions();
        ConnOpt.Impersonation = ImpersonationLevel.Impersonate;
        var msc = new ManagementScope(@"root\cimv2", ConnOpt);
        ObjectQuery oqQry;
        if (null != driveCode)
        {
            oqQry = new ObjectQuery("SELECT * FROM Win32_LogicalDisk");
            //oqQry = new ObjectQuery("SELECT * FROM Win32_LogicalDisk WHERE DriveType = 4");
            //oqQry = new ObjectQuery("SELECT * FROM Win32_MappedLogicalDisk ");
            try
            {
                oWMI = new ManagementObjectSearcher(msc, oqQry);
                if (null != oWMI) {
                    foreach (ManagementObject wmi_HD in oWMI.Get())
                    {
                        if(null!= wmi_HD["ProviderName"])sProvidr = wmi_HD["ProviderName"].ToString();
                        if (null != wmi_HD["VolumeName"]) sProvidr = wmi_HD["VolumeName"].ToString();
                        if (null != wmi_HD["Description"]) sProvidr = wmi_HD["Description"].ToString();
                    }

                }

В заключение:

Дополнительное открытие пришел из использования WMI в VBA. Однако результаты были такими же, отсутствие обнаружения подключенного диска на логическом диске. Таким образом, решение будет использовать данные реестра, когда подключенный диск не может быть обнаружен.

Тот же запрос, отправленный в MSDN, содержал дополнительный параметр поиска WMI с помощью ASSOCIATORS OF. Помимо этого урока, решение будет указывать на использование сценариев PowerShell в пределах C#. Это помогает, но пока моей работы будет достаточно, и я не знаю, будет ли такой же подход работать в VBA. Пора двигаться дальше.

...