Autostart a pendrive

W odróżnieniu od płyt CD i DVD, ani na pendrivie, ani na przenośnych dyskach podłączanych do gniazda USB ze względów bezpieczeństwa nie da się zastosować programów uruchamiających się automatycznie. Co zrobić, jeśli mimo wszystko zechcesz skorzystać z tej funkcji w Windows XP?

Z technicznego punktu widzenia Windows ignoruje polecenia Open i ShellExecute umieszczone w pliku Autorun.INF w głównym katalogu nośnika, np.:

[Autorun] 

ShellExecute=Info.txt

Między innymi właśnie dlatego wprowadzono pendrive’y obsługujące standard U3. Emuluje on płytę CD, umożliwiając stosowanie funkcji AutoRun również w nośnikach USB. Jednak tak naprawdę można uaktywnić wspomnianą funkcję tylko przez poprawną konfigurację w Windows XP. Implementacja i działanie funkcji AutoRun jest dość skomplikowana. Nawet Microsoftowi zdarzało się popełnić kilka błędów w najlepszej witrynie dotyczącej tej tematyki ( msdn2.microsoft.com/en-us/library/bb776823.aspx ). Poniższą instrukcję przetestowaliśmy gruntownie na kilkunastu pendrive’ach, jednak nie możemy zagwarantować, że zadziała w każdym napędzie tego rodzaju. AutoRun kontra AutoPlay. Najpierw należy dokonać rozróżnienia pomiędzy dwoma funkcjami - AutoRun i AutoPlay. Podczas gdy pierwsza wykonuje program podany w pliku Autorun.INF, druga analizuje zawartość nośnika i w oknie dialogowym proponuje kilka opcji odtworzenia zawartych na nim treści zależnie od ich typu. Czy zadziała (niezbyt bezpieczny) AutoRun, nie zależy tylko i wyłącznie od poprawności poleceń w pliku Autorun.INF, lecz również od określonych ustawień w systemie Windows (patrz dalej). Autorun.INF. Aby uruchomić dowolny program, wystarczy jedno polecenie ShellExecute na płycie CD/DVD. Warto nadmienić, że polecenie ShellExecute jest bardziej uniwersalne niż Open, bo umożliwia przywoływanie dowolnego rodzaju plików. Tymczasem Open wymaga plików wykonywalnych. Jeśli żądany plik znajduje się w jednym z podkatalogów katalogu głównego, należy poprzedzić nazwę pliku nazwą tego folderu (bez poprzedzania ukośnikiem), np.

[Autorun] 

ShellExecute=Dane\Info.vbs

Aby takie polecenie zostało wykonane także z nośnika USB, konieczna jest dodatkowa instrukcja:

UseAutoplay=1

Ustawienie AutoRun - każdy bit w wartości DWORD o nazwie “NoDriveAutoRun” odpowiada dyskowi określonego typu. Cyfra 0 dopuszcza AutoRun, zaś cyfra 1 blokuje tę funkcję.

Jest to sprzeczne z logiką, ponieważ nie chcesz zainicjować funkcji AutoPlay, a tylko akcję AutoRun. Na marginesie - fakt, iż polecenie UseAutoplay obejmuje dyski USB, przeczy stwierdzeniu Microsoftu, że dotyczy tylko napędów typu DRIVE_CDROM. Tak czy inaczej, aby zrobić ze zwykłego pendrive’a samouruchamiający się dysk USB, wystarczą trzy powyższe polecenia. Oprócz tego dysk powinien być sformatowany w systemie plików FAT bądź NTFS (nie FAT32). Jeśli przystawka zarządzania dyskami zaproponuje ci tylko FAT32, użyj zamiast niej polecenia format w połączeniu z parametrem FS:[FAT|NTFS]. Tymczasem NTFS można wybrać tylko wtedy, gdy we właściwościach pendrive’a (znajdziesz je w gałęzi Stacje dysków Menedżera urządzeń) na karcie Zasady jest zaznaczona opcja Optymalizacja wydajności.

Struktura folderów. Na dyskach USB powinna być możliwie płytka. AutoRun działa bez zarzutu tylko na jednej, maksymalnie dwóch płaszczyznach pod katalogiem głównym.

Ustawienia Windows. W domyślnie skonfigurowanym środowisku Windows funkcja AutoRun jest ograniczona do określonych napędów poprzez następujące wpisy rejestru:

  1. W kluczu HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\Explorer mogą figurować dwa wpisy dotyczące funkcji AutoRun. Wartość NoDriveAutoRun blokuje działanie funkcji AutoRun w dyskach o określonych przyporządkowanych literach (wyjątkowo rzadko stosowana wartość). Natomiast wartość NoDriveTypeAutoRun ogranicza działanie AutoRunu do napędów określonego typu. Wartości DWORD NoDriveTypeAutoRun jest przyporządkowana domyślnie liczba szesnastkowa 95, co wyklucza działanie funkcji na wymiennych nośnikach danych, czyli napędach odłączanych. Musisz przypisać jej liczbę 91, aby AutoRun działał nie tylko w napędach domyślnych, lecz również w dyskach USB. A jeśli chcesz stosować ją tylko w dyskach odłączanych, zamień 95 na FB.

Jeśli w rejestrze brakuje wartości NoDriveTypeAutoRun, obowiązują ustawienia domyślne. Wówczas należy utworzyć nową wartość DWORD o tej nazwie i przydzielić jej jedną z podanych powyżej liczb.

Być może, podklucz o takiej samej nazwie znajduje się w obrębie klucza HKEY_LOCAL_MACHINE. To ustawienie dominuje nad wpisem z klucza HKEY_CURRENT_USER. Wówczas należy wprowadzić w nim powyższe zmiany.

  1. Możesz wyłączyć funkcję AutoRun do napędów CD-ROM. Wystarczy utworzyć wartość DWORD o nazwie Autorun w kluczu HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Cdrom i przypisać jej cyfrę 0. Nie ma to jednak wpływu na opisany powyżej sposób uaktywniania AutoRun w napędach USB.

Ustawienie AutoRun - każdy bit w wartości DWORD o nazwie “NoDriveAutoRun” odpowiada dyskowi określonego typu. Cyfra 0 dopuszcza AutoRun, zaś cyfra 1 blokuje tę funkcję.

Napisał: Krzysztof Daszkiewicz