Skocz do zawartości

Ręczna deisntalacja sterowników w Windows 7


wolsky

Rekomendowane odpowiedzi

Witam,

 

Chciałbym napisać sobie maly programik w batch ktory usuwałby sterowniki karty grafiki, niestety nie znam doskonale budowy i sposobu funcjonowania systemu windows 7 stąd pytanie jak poprawnie powinien wyglądać schemat.

 

Czy wystarczy dzialac mniej wiecej w ten sposob:

 

Najpierw zamkniecie i usuniecie procesów i usług:

taskkill /f

net stop

sc delete

 

Nastepnie usuniecie plikow exe i biliotek dll powiazanych:

for /D %%i in ("ścieżka pliku") do rd "%%i

 

a na końcu usuniecie wpisów rejestru:

reg delete "ścieżka: /f

 

Czy to wystarczy? Czy jest koniecznosc wyrejestrowania plikow dll poprzez regsvr32 /u? jesli tak to w jakiej kolejnosci?

 

Bardzo dziekuje za pomoc.

 

Z pozdrowieniami

wolsky

Odnośnik do komentarza
Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

Obawiam się, że ogólnego schematu raczej nie ma i najlepiej korzystać z deinstalatora producenta. Owszem, usunięcie właściwego sterownika to zatrzymanie i usunięcie usługi z SCM, ale do tego dochodzi odwiązanie usługi sterownika od klasy urządzenia, etc.

Na tym się jednak nie kończy - do komunikacji ze sterownikiem są moduły 'użytkownika', które też należy usunąć z systemu: usługa utrzymania, biblioteki rozszerzające powłokę, programy uruchamiane przy logowaniu, etc. Zdecydowanie odradzam ręczną zabawę.

 

m.g.

Odnośnik do komentarza

Witaj Grzegorzu,

 

Dziękuje serdecznie za konstruktywną opinie. Muszę jednak doprecyzować moje poprzednie pytanie. Otóż nie mam zamiaru brać się za tworzenie kompletnego deinstalatora, ktorego używałbym zamiast producenckiego, a jedynie prosty skrypt który miałby usunąć pozostałości po użyciu tego "fabrycznego". Niestety jest on (ten fabryczbny) na tyle niedoskonały, że często pozostają wciąż działające procesy które, albo powodują błędy w pracy, albo porostu uniemożliwiają poprawną instalację nowszych wersji.

 

Kilka linijek skryptu o których wspomniałem w pierwszym poście są z tego co widzę wystarczające, żeby usunąć te pozostałości, ale chciałem się dowiedzieć co powonieniem zrobić więcej, np czy jest konieczność (a raczej sens) wyrejestrowania bibliotek i co jeszcze w miarę prostego i dostępnego dla przeciętnego człeka mógłbym zrobić więcej ;)

 

Będę wdzięczny za wszelkie sugestie.

 

Z pozdrowieniami

Odnośnik do komentarza

Niestety wszystko zależy od konkretnego przypadku i czasem wykonanie takiego skryptu może przynieść więcej szkód, niż korzyści. Dla przykładu, ręczny deinstalator Kaspersky'ego czasem zapomina o górnych filtrach założonych na urządzenia USB i po usunięciu sterownika z gałęzi services pozostają wpisy w innych (np. Control/Class), co kończy się problemami ze wszystkimi urządzeniami podpiętymi do magistrali USB i ratunkiem jest np. klawiatura podpięta do PS2 ;). Inną kategorią są wspomniane przeze mnie wcześniej usługi powiązane ze sterownikami (np. nvUpdatusService NVIDII), które czasem będąc osamotnione (bez sterownika) destabilizują system - spowalniają działanie, etc. Na samym końcu są aplikacje pracujące w sesji użytkownika, które komunikują się z usługami i sterownikami i pozostawienie ich osieroconych również nie przynosi niczego dobrego.

 

Michał

Odnośnik do komentarza

W uproszczeniu można przyjąć, że sam sterownik podczas instalacji powinien wykonać czynności podane w dołączonym pliku ".inf" więc wystarczy je po prostu odwrócić (plik inf ma dość prostą strukturę), zresztą często plik inf zawiera już ciągi potrzebne do deinstalacji, wystarczy tylko wywołać odpowiednią sekcję.

 

Problemem - jak już przedmówca zauważył - są dodatki instalowane poza plikiem inf. Ponadto sterownik nie tylko dodaje wpisy rejestru ale może też modyfikować już istniejące a wtedy podczas deinstalacji musiałbyś dysponować ich pierwotną wersją.

 

pzdr

Odnośnik do komentarza

Plik .inf to bardzo dobre źródło informacji o intencjach autora sterownika i na pewno warto do niego zajrzeć. Niestety czasem pliku brak (sterowniki można również instalować programowo (tak robią np. Process Explorer, Process Hacker i wiele innych narzędzi systemowych), albo korzystając z sc.exe), lub trzeba go szukać po całym systemie (vide przykład Kaspersky'ego). Mając już samego .inf-a można użyć

 

pnputil -f -d plik.inf

 

lub

 

rundll32.exe setupapi.dll,InstallHinfSection DefaultUninstall

 

z odpowiednimi parametrami (w tym nazwa pliku .inf).

Zawsze jednak warto wcześniej sprawdzić zawartość rejestru i systemu plików, bo może się okazać, że po takich operacjach wpadniemy w większe tarapaty.

 

Zabawa z plikami .inf wymaga jednak pewnej wiedzy i rozumienia procesu instalacji i działania sterowników (o czym na pewno przekonał się każdy, kto choć jeden taki plik sam przygotował), dlatego byłbym ostrożny w polecaniu tej drogi.

 

m.g.

Odnośnik do komentarza

Zabawa z plikami .inf wymaga jednak pewnej wiedzy i rozumienia procesu instalacji i działania sterowników (o czym na pewno przekonał się każdy, kto choć jeden taki plik sam przygotował), dlatego byłbym ostrożny w polecaniu tej drogi.

Nie chcę żeby to zabrzmiało jak polemika, chodzi mi raczej o uzupełnienie - masz rację jeżeli chodzi o instalację ale tu nasuwa się oczywista myśl, w tym przypadku użytkownik musi wiedzieć czego sterownik potrzebuje do prawidłowego działania natomiast sam plik .inf jest już tylko czysto mechaniczną projekcją tych potrzeb. W tym temacie taka potrzeba (przynajmniej teoretycznie) nie zachodzi, do odwrócenia procesu wystarczy zrozumienie samej mechaniki tego pliku.

Natomiast to o czym wspomniałeś należy rozszerzyć na całe zagadnienie ręcznego usuwania sterowników, bez pewnej wiedzy na temat danego sterownika lepiej w ogóle go nie ruszać.

Oczywiście dalej w kontekście tego o co pyta kolega @wolsky czyli posprzątania po niepełnej/nieudanej deinstalacji, tutaj jest teoretycznie bezpieczniej zakładając, że fabryczny deinstalator jednak zrobił większość, tylko jak to zautomatyzować, nawet zakładając że plik inf zawiera sekcję deinstalacyjną to pewnie wysypie się na nieistniejących wpisach.

Sama sekcja oczywiście może też mieć inną wartość niż domyślne "DefaultUninstall".

 

Jeszcze odnośnie samej obecności bądź nie pliku inf - w typowo sprzętowych sterownikach powinien taki plik być dostepny choćby ze względu na instalacje fabryczne/nienadzorowane gdzie sterownik będzie instalowany właśnie na bazie takich plików wspomnianym już pnputil czy dpinst.

I jeszcze jedno - pnputil działa tylko na sterownikach rozpoznawanych w systemie jako OEM ale mam nadzieję, że o innych @wolsky nawet nie myśli.

 

pzdr

Odnośnik do komentarza

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Jedynie zarejestrowani użytkownicy mogą komentować zawartość tej strony.

Zarejestruj nowe konto

Załóż nowe konto. To bardzo proste!

Zarejestruj się

Zaloguj się

Posiadasz już konto? Zaloguj się poniżej.

Zaloguj się
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...