Jak zmienić opis usługi?
Skrypciarze odpowiadają na Wasze pytania
Witamy w rubryce TechNet, w której Skrypciarze z firmy Microsoft odpowiadają na częste pytania dotyczące używania skryptów w administracji systemu. Jeśli macie jakieś pytania z tej dziedziny, zachęcamy do wysłania e-maila na adres: scripter@microsoft.com. Nie możemy zagwarantować odpowiedzi na każde otrzymane pytanie, ale staramy się jak możemy. |
Jak zmienić opis usługi?
Cześć, Skrypciarze! Jak zmienić opis usługi?
-- DD
Cześć, DD. Ktoś kiedyś miał powiedzieć, że rzeczy, w które nie wierzymy nie istnieją. Nasuwa się zatem pytanie, czy jeżeli w coś wierzymy, to naprawdę to istnieje. Czy jeżeli miliony dzieci wierzą w Świętego Mikołaja, a dorośli już nie, to czy on istnieje, czy też nie? Kto ma rację? A duchy, potwory, zjawy? Czy one istnieją? To tylko niektóre z pytań dręczących od rana Skrypciarza piszącego te słowa. Skąd się wziął ten nastrój? Podobno przyśniło mu się coś strasznego, a zobaczywszy pytanie, na które ma odpowiedzieć, kompletnie się pogubił. Do tej pory bowiem nigdy nie zastanawiał się nawet nad istnieniem możliwości zmiany opisu usługi wychodząc z założenia, że skoro można zmienić tryb uruchomienia usługi i hasło usługi oraz inne opcje związane z usługami, to przecież da się także zmienić opis usługi. Jednak po przeczytaniu pytania i otwarciu zestawu SDK usługi WMI, ku swojemu wielkiemu zdziwieniu i rozczarowaniu stwierdził, że nie ma metody WMI, bezpośrednio zmieniającej opis usługi. Piszący te słowa Skrypciarz wierzył, że można zmienić opis usługi za pomocą skryptu, a jednak okazało się, że nie. Więc jak może teraz spać spokojnie, skoro coś, w istnienie czego wierzył, nie istnieje? A co, jeżeli, dla odmiany, wszystkie rzeczy, w które nie wierzy, istnieją?
Z drugiej strony, można zacząć od poniższego skryptu:
Const HKEY_LOCAL_MACHINE = &H80000002
strComputer = "."
Set objRegistry = GetObject("winmgmts:\\" & strComputer & "\root\default:StdRegProv")
strKeyPath = "System\CurrentControlSet\Services\SerialKeys"
strValueName = "Description"
strValue = "This is the SerialKeys service."
objRegistry.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
To nie sen. Skrypciarz piszący te słowa miał rację. Aplikacja WMI nie przewiduje prostej metody zmieniającej opis usługi. Nie oznacza to jednak, że nie można tego opisu zmienić; oznacza to jedynie, że należy użyć skryptu, który zmienia ten opis w rejestrze. Jak ten powyżej.
W jaki więc sposób ten skrypt zmienia opis w rejestrze? Na początek, określa stałą o nazwie HKEY_LOCAL_MACHINE i nadaje jej wartość &H80000002; dzięki temu wiadomo, z którą lokalizacją rejestru chcemy pracować. Następnie skrypt łączy się z usługą WMI na lokalnym komputerze, a dokładnie z przestrzenią nazw root\default oraz klasą StdRegProv.
Uwaga. Oczywiście można zastosować ten skrypt na zdalnym komputerze. W tym celu należy przypisać nazwę zdalnego komputera do zmiennej strComputer. |
Połączywszy się z usługą WMI, przypisujemy wartości trzem zmiennym:
• | strKeyPath, reprezentującej ścieżkę dostępu (w ramach HKEY_LOCAL_MACHINE) do klucza rejestru do usługi, którą chcemy zmodyfikować. Tę wartość należy ustawić na System\CurrentControlSet\Services\, dodając nazwę usługi. W ten sposób otrzymamy: System\CurrentControlSet\Services\SerialKeys. |
• | strValueName, reprezentującej nazwę wartości rejestru, którą chcemy zmodyfikować. Jak można się było spodziewać, w naszym wypadku jest to Description. |
• | strValue, która zawiera nowy opis dla usługi. |
Po przypisaniu wartości dla tych zmiennych, przekazujemy nazwy zmiennych oraz stałą HKEY_LOCAL_MACHINE do metody SetStringValue – i to już wszystko:
objRegistry.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue
Jeżeli teraz otworzymy konsolę Services, zauważymy nowy opis dla usługi SerialKeys. Czyż to nie jest niesamowite?
Miejmy nadzieję, że teraz nasz Skrypciarz będzie spał spokojnie.
Do początku strony |