[VBS] Dodawanie klucza do rejestru


(Ziomal 100) #1

Witam. Chciałbym stworzyć nowy klucz w rejestrze za pomocą vbs i nie wiem jak się do tego zabrać. Klucz ma powodować autostart pliku powitanie.vbs przy każdym uruchomieniu komputera. Plik znajduje się pod ścieżką %WinDir%/powitanie.vbs

Proszę o szybką pomoc.


(Ryan) #2

Tu masz przykładowe wstawki do operowania na rejestrze:

http://www.activexperts.com/activmonito ... /registry/

Alternatywnie możesz uruchomić reg.exe z odpowiednimi parametrami.

Tak na marginesie: nie śmieć w katalogu Windowsa, nie umieszczaj w nim własnych plików.


(Ziomal 100) #3

Dzięki! Trochę pomogło ale jest tam opisane jak stworzyć klucz, a ja nadal nie wiem co zrobić żeby powodował on autostart i gdzie tam wpisać nazwę klucza i ścieżkę do pliku który chcę uruchomić.


(floyd) #4

Najwygodniej wykorzystać procedurę w vbs tworzącą skrót na pulpicie do pliku.

Przykład.

Set WSHShell = CreateObject("WScript.Shell")

sciezka = "C:\windows\system32": nazwa = "\notepad.exe": skrot = "\notatnik.lnk"

Dim MyShortcut, MyDesktop, DesktopPath

DesktopPath = WSHShell.SpecialFolders("Desktop")

Set MyShortcut = WSHShell.CreateShortcut(DesktopPath & skrot)

MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings(sciezka + nazwa)

MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings(sciezka)

MyShortcut.WindowStyle = 4

MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings(sciezka + nazwa + ", 0")

MyShortcut.Save

(Ziomal 100) #5

A co daje to że tworzę skrót na pulpicie? I czy mógłbyś mi dokładniej objaśnić po kolej wszystko co robi ten kod? byłbym wdzięczny :slight_smile:


([alex]) #6

http://msdn.microsoft.com/en-us/library ... 85%29.aspx


(Ziomal 100) #7

A poco ten skrót tworzyć na pulpicie i jaka część tego kodu odpowiada za dodanie do autostartu?


(Tomek Matz) #8

Ja do końca nie rozumiem co chcesz zrobić. Mówisz, że chcesz dodać do autostartu i jednocześnie za pomocą rejestru. Jak chcesz dodać do autostartu to musisz utworzyć odpowiedni skrót w folderze Menu Start\Programy\Autostart (jego dokładna lokalizacja zależy od wersji Windows). Jeśli natomiast chcesz dodać program do autorunu, to wówczas faktycznie trzeba utworzyć klucz w rejestrze, ale plik nie będzie widoczny w autostarcie.

Jeśli chodzi o autorun to ta informacja powinna Ci wystarczyć:

http://www.delphitips.net/2007/06/16/create-autorun-registry-key-run-application-with-windows-start/

Jak wyświetlisz sobie ten klucz przy użyciu narzędzia regedit to zauważysz, że znajdują się tam pozycje, które dodajesz przy użyciu Uruchom -> msconfig -> Zakładka Uruchamianie.

EDIT:

const HKEY_LOCAL_MACHINE = &H80000002

strComputer = "."


Set oReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")

strKeyPath = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run"

strValueName = "Powitanie"

strValue = "%windir%\powitanie.vbs"


oReg.SetExpandedStringValue HKEY_LOCAL_MACHINE, strKeyPath, strValueName, strValue

dla HKEY_CURRENT_USER podmień w stałej 2 na 1 (http://msdn.microsoft.com/en-us/library/aa393299%28v=vs.85%29.aspx).


(floyd) #9

Rzeczywiście, moja pomyłka. Zamiast katalogu Desktop należało by podać katalog docelowy autostartu czyli zamienić katalog docelowy specjalfolders z "Desktop" na np. "AllUsersStartup"- dla wszystkich lub "Startup" dla pojedyńczego użytkownika.

Cała procedura będzie wówczas wyglądała tak:

Set WSHShell = CreateObject("WScript.Shell")

sciezka = "C:\windows\system32\": nazwa = "notepad.exe": skrot = "notatnik.lnk"

Path = WSHShell.SpecialFolders("AllUsersStartup")& "\"

Set MyShortcut = WSHShell.CreateShortcut(Path & skrot)

MyShortcut.TargetPath = WSHShell.ExpandEnvironmentStrings(sciezka & nazwa)

MyShortcut.WorkingDirectory = WSHShell.ExpandEnvironmentStrings(sciezka)

MyShortcut.WindowStyle = 4

MyShortcut.IconLocation = WSHShell.ExpandEnvironmentStrings(sciezka & nazwa & ", 0")

MyShortcut.Save

Zmieniasz tylko w tej procedurze, ścieżkę do pliku, nazwę programu który ma być umieszczony w autostarcie i nazwę skrótu. Oczywiście ten skrypt tworzy wpis do rejestru, ale bez grzebania w nim ręcznie.


(Ziomal 100) #10

Dzięki za pomoc! Właśnie oto mi chodziło. Sprawdzę jeszcze tylko czy działa i dam później znać.

Tymczasem proszę o odpowiedź na mój drugi wątek. Chodzi tam o to że nie wysyła się załącznik w emailu i że chcę wgrać listę zainstalowanych programów na danym komputerze do zmiennej


(Tomek Matz) #11

Musi działać, bo testowałem. Na systemie Windows Vista/7 będziesz musiał ten skrypt odpalić z uprawnieniami administratora. Ewentualnie jak będziesz odpalał z wiersza poleceń przy użyciu narzędzia cscript, to wówczas wiersz poleceń musisz odpalić z uprawnieniami administratora.


(Ziomal 100) #12

ok. dzięki