Войти

Показать полную графическую версию : [решено] *WMI* | Как программно удалить устройтсво?


pva
17-02-2011, 21:29
Здравствуйте все! У меня раз в день глючит модем, которое можно оживить так:

удалить модем, сылающийся на порт
удалить порт
обновитьс список устройств (чтобы порт добавился)
добавить модем

Другие способы не прокатывают, хочу этот автоматизировать. Как найти его класс через WMI я выяснил, но удалить его и обновить устройства - что-то туплю. Подскажите, кто что знает?

Beyound
17-02-2011, 21:53
)) чесно - это из разряда "здраствуйте, у меня у машины мотора нет, но кататься хота, куда лучше поставить цепь для педалей"? а если по теме я слышал о WMI Code Creator, может это то что тебе нужно?

pva
17-02-2011, 22:17
Продолжая метафору: "мотор у машины есть. Педаль газа жать надоело. Ищу вентиль автостарта". По теме: ещё есть большой MSDN, где описано то, что выдаёт WMI Code Creator. Так вот, по поводу классов Win32_SerialPort: есть метод Restart, который тупо не реализован.

Нашёл вот что:

Just guessing but try these :
rundll32 cfgmgr32.dll ,CM_Reenumerate_DevNode
rundll32 cfgmgr32.dll ,CM_Locate_DevNodeA

Нифига не работает


RunDll32.exe Syssetup.dll,UpdatePnpDeviceDrivers

Настолько ядрёная вещь, что понаделала двойников некоторых устройств, выбила нафиг вай-фай, который заработал только после перезагрузки. На такие жертвы я не согласен. Ищем ещё.

2 метода оставлены на закуску:

'example of AppActivate and SendKeys

set WshShell = CreateObject("WScript.Shell")
WshShell.Run "devmgmt.msc"
WScript.Sleep 1000
While WshShell.AppActivate("Device Manager") = FALSE
wscript.sleep 1000
Wend
WshShell.AppActivate "Device Manager"
WScript.Sleep 200
WshShell.Sendkeys "{TAB}"
WScript.Sleep 200
WshShell.SendKeys "%A"
WScript.Sleep 200
WshShell.SendKeys "A"
While WshShell.AppActivate("Scanning Plug and Play Compliant Hardware...") = TRUE
wscript.sleep 5000
Wend
WshShell.AppActivate "Device Manager"

'Wscript.Sleep 500
WshShell.Sendkeys "{ENTER}"
Wscript.Sleep 500
WshShell.Sendkeys "%{F4}"
*** Script Ends

не дай бог нажать что-нибудь на клавиатуре или неудачно тыкнуть мышкой


devcon rescan

http://support.microsoft.com/default.aspx?scid=KB%3BEN-US%3Bq311272
неужели WMI не сделали? :(

pva
18-02-2011, 15:05
Что-то devcon я вообще не оценил. Выдаёт ответ в совершенно неудобоворимом формате. Пробовал найти свой модем в устройствах - гемор какой-то. Единственная полезная функция - это rescan.

В общем devcon - в мусорку.

Метод активации запуском менеджера устройств не прокатывает, ибо комбинация клавиш, которую надо нажать, чтобы вызвать обновление устройств, просто жуткая! как для фаталити в мортал-комбате. Предложенный буржуями вариант не прокатил на русскоязычной винде.

В общем оставленное на закуску - в мусорку.

Ищем дальше.

pva
19-02-2011, 02:05
Написал удобную утилиту, использующую cfgmgr32.dll

Nerey
27-07-2011, 17:48
Столкнулся с похожей проблемой
Очень хотелось бы увидеть реализацию

pva
27-07-2011, 21:55
К сожалению, я не могу прикрепить исходник, т.к. сумма моих вложений превышает 1.99 Мб. и что-то там надо удалять, а мне лень. Я думал оно самоуничтожается при необходимости

Iska
27-07-2011, 23:42
pva, всегда можно выложить на обменник, а ссылку выложить сюда или в ПМ просящему.

Nerey
03-08-2011, 09:27
Так ли сложно выложить на какой-нибудь обменник, как посоветовал Iska?

pva
21-08-2011, 13:51
Nerey, скажи почту, я вышлю. С обменниками надо заморачиваться

Nerey
22-08-2011, 09:25
Почту указываем в профиле...




© OSzone.net 2001-2012