
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[35.172.111.47] |
![]() |
|
Страницы: (2) 1 [2] все ( Перейти к последнему сообщению ) |
Сообщ.
#16
,
|
|
|
боюсь комп этого не переживет:)
и так на многи запросы комп зависает... думал может кто подскажет... |
Сообщ.
#17
,
|
|
|
таки нету вроде непосредственного WMI в свойствах которого будет метка на компорт...
таки любоптно - как их вычисляет девайс манагер в красивом виде... чтото мне подсказывает что как ПнП девайс... но как оттуда вытащить имя порта...? цена вопроса 10 баксов ![]() ![]() |
Сообщ.
#18
,
|
|
|
хм... похоже всетаки нарыл то чт мне нужно
![]() http://www.delphi3000.com/articles/article_4001.asp?SK= если кому интересно.. правда не на шарпе... мозгодробилка блин... думал будет проще |
Сообщ.
#19
,
|
|
|
решил пойти другим путем
![]() перебираю поля USBControllerDevice (там в поле Dependent есть чтото весьма похожее на путь в реестр, откуда можно снять информацию о порте собственно) ![]() ![]() public SomeScanFunc() { ManagementClass c = new ManagementClass("Win32_USBControllerDevice"); foreach (ManagementObject o in c.GetInstances()) { try { string path = o["Dependent"].ToString(); RegistryKey key = Registry.LocalMachine.OpenSubKey(path); } catch { } } } только блин этот путь не совсем путь... структура поля следующая: ![]() ![]() \\Имя компа\\root\\cimv2:Win32_PnPEntity.DeviceID=\"USB\\ROOT_HUB\\4&74BD3DD&0\" собственно часть "USB\\ROOT_HUB\\4&74BD3DD&0\" есть куском пути. ![]() уж больно мутно но пока так ![]() буду рад если кто поправит меня - как это сделать проще? и еще попутно для знатоков вопрос: поле Dependent класа Win32_USBControllerDevice есть ссылка на (обьект?) CIM_LogicalDevice ? ![]() ![]() class Win32_USBControllerDevice : CIM_ControlledBy { uint16 AccessState; CIM_USBController ref Antecedent;// как получить отсюда обьект типа CIM_USBController? CIM_LogicalDevice ref Dependent; uint32 NegotiatedDataWidth; uint64 NegotiatedSpeed; uint32 NumberOfHardResets; uint32 NumberOfSoftResets; }; class CIM_LogicalDevice { UInt16 Availability; string Caption; UInt32 ConfigManagerErrorCode; bool ConfigManagerUserConfig; string CreationClassName; string Description; string DeviceID; bool ErrorCleared; string ErrorDescription; DateTime InstallDate; UInt32 LastErrorCode; string Name; string PNPDeviceID; UInt16[] PowerManagementCapabilities; bool PowerManagementSupported; string Status; UInt16 StatusInfo; string SystemCreationClassName; string SystemName; } собственно вопрос - как получить из длинной некрасивой строки Dependent красивый обьект класса CIM_LogicalDevice? первое что пришло в голову - создал класс CIM_LogicalDevice и попробовал привести [Dependent] к (CIM_LogicalDevice) ![]() ![]() ![]() |
Сообщ.
#20
,
|
|
|
Столкнулся с аналогичной же проблемой, помучался
![]() Объект в итоге получить очень просто: из той строки, что он тебе выдает очень легко сформулировать очередной WQL запрос. Например, из строки ![]() ![]() \\ACER\root\cimv2:Win32_PnPEntity.DeviceID="USBSTOR\\DISK&VEN_T.SONIC&PROD_820&REV_\\10004020200001210064&0" очень нетрудно создать такой запрос: ![]() ![]() ManagementObjectSearcher s2 = new ManagementObjectSearcher(@"\\ACER\root\cimv2",@"SELECT * FROM Win32_PnPEntity WHERE DeviceID='USBSTOR\\DISK&VEN_T.SONIC&PROD_820&REV_\\10004020200001210064&0'"); А далее, уже методом Get() получаешь коллекцию, с которой смело можно работать (думаю, можно еще проще сделать запрос, но пока не понял как ![]() |