Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Istnieje wiele sytuacji, w których może być konieczne tymczasowe lub trwałe wyłączenie funkcji AutoRun. Na przykład funkcja AutoRun może zakłócać działanie uruchomionej aplikacji i musi być wyłączona przez ten czas. System udostępnia kilka sposobów wyłączania automatycznego uruchamiania.
- pomijanie automatycznego uruchamiania programowo
- Użycie rejestru do wyłączenia automatycznego uruchamiania
- Autouruchamianie dla innych typów nośników pamięci
Tłumienie funkcji AutoRun programowo
Istnieje wiele sytuacji, w których funkcja AutoRun może być pomijana programowo. Dwa przykłady to:
- Aplikacja ma program instalacyjny, który wymaga od użytkownika wstawienia innego dysku, który może zawierać plik Autorun.inf.
- Podczas działania aplikacji może być konieczne wstawienie innego dysku, który może zawierać plik Autorun.inf.
W obu przypadkach zwykle nie chcesz uruchamiać innej aplikacji, gdy oryginał jest w toku.
Użytkownicy mogą ręcznie pominąć autouruchomienie, przytrzymując klawisz SHIFT podczas wstawiania dysku CD-ROM. Jednak zwykle najlepiej jest obsługiwać tę operację programowo, a nie w zależności od użytkownika.
W przypadku systemów, które mają Shell w wersji 4.70 i nowszych, system Windows wysyła komunikat "QueryCancelAutoPlay" do okna na pierwszym planie. Aplikacja może odpowiedzieć na tę wiadomość, aby zablokować autouruchomienie. To podejście jest używane przez narzędzia systemowe, takie jak Otwórz wspólne okno dialogowe, aby wyłączyć AutoRun.
Poniższe fragmenty kodu ilustrują sposób konfigurowania i obsługi tego komunikatu. Aplikacja musi być uruchomiona w oknie pierwszego planu. Najpierw zarejestruj "QueryCancelAutoPlay" jako komunikat systemu Windows:
uMessage = RegisterWindowMessage(TEXT("QueryCancelAutoPlay"));
Aby otrzymać ten komunikat, okno aplikacji musi znajdować się na pierwszym planie. Program obsługi komunikatów powinien zwrócić true, aby anulować autouruchomienie i false, aby je włączyć. Poniższy fragment kodu ilustruje sposób użycia tego komunikatu do wyłączenia funkcji AutoUruchomienie.
UINT g_uQueryCancelAutoPlay = 0;
LRESULT WndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
...
default:
if (!g_uQueryCancelAutoPlay)
{
g_uQueryCancelAutoPlay = RegisterWindowMessage(TEXT("QueryCancelAutoPlay"));
}
if (uMsg && uMsg == g_uQueryCancelAutoPlay)
{
return TRUE; // Cancel AutoRun
}
}
}
Jeśli aplikacja używa okna dialogowego i musi odpowiedzieć na komunikat "QueryCancelAutoPlay", nie może po prostu zwrócić TRUE lub FALSE. Zamiast tego wywołaj SetWindowLong z nIndex ustawiony na DWL_MSGRESULT. Ustaw parametr dwNewLong na true, aby anulować autouruchomienie, a false, aby go włączyć. Na przykład poniższa przykładowa procedura okna dialogowego anuluje automatyczne uruchamianie po odebraniu komunikatu "QueryCancelAutoPlay".
UINT g_uQueryCancelAutoPlay = 0;
BOOL DialogProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
{
switch (uMsg)
{
...
default:
if (!g_uQueryCancelAutoPlay)
{
g_uQueryCancelAutoPlay = RegisterWindowMessage(TEXT("QueryCancelAutoPlay"));
}
if (uMsg == g_uQueryCancelAutoPlay)
{
SetWindowLong(hDlg, DWL_MSGRESULT, TRUE);
return 1;
}
}
Wyłączanie automatycznego uruchamiania przy użyciu rejestru
Istnieją dwie wartości rejestru, których można użyć do trwałego wyłączenia funkcji AutoRun: NoDriveAutoRun i NoDriveTypeAutoRun. Pierwsza wartość wyłącza funkcję AutoRun dla określonych liter dysku, a druga wyłącza funkcję AutoRun dla klasy dysków. Jeśli któraś z tych wartości zostanie ustawiona na wyłączenie funkcji AutoRun dla określonego urządzenia, funkcja ta zostanie wyłączona.
Notatka
Wartości NoDriveAutoRun i NoDriveTypeAutoRun powinny być modyfikowane tylko przez administratorów systemu w celu zmiany wartości dla całego systemu w celach testowych lub administracyjnych. Aplikacje nie powinny modyfikować tych wartości, ponieważ nie ma możliwości niezawodnego przywrócenia ich do oryginalnych wartości.
Wartość NoDriveAutoRun wyłącza autouruchomienie dla określonych liter dysku. Jest to wartość danych REG_DWORD znaleziona w następującym kluczu:
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Policies
Explorer
Pierwszy bit wartości odpowiada stacji A:, drugi do B:, i tak dalej. Aby wyłączyć funkcję AutoRun dla jednego lub kilku liter dysku, ustaw odpowiednie bity. Aby na przykład wyłączyć dyski A: i C:, ustaw NoDriveAutoRun na wartość 0x00000005.
Wartość NoDriveTypeAutoRun wyłącza funkcję AutoRun dla klasy dysków. Jest to wartość danych typu REG_DWORD lub 4-bajtowa REG_BINARY, znajdująca się pod tym samym kluczem.
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Policies
Explorer
Ustawiając bity pierwszego bajtu tej wartości, różne dyski można wykluczyć z pracy z funkcją AutoRun.
W poniższej tabeli przedstawiono bity i stałe maski bitów, które można ustawić w pierwszym bajcie NoDriveTypeAutoRun, aby wyłączyć AutoRun dla określonego typu dysku. Aby zmiany zaczęły obowiązywać, należy ponownie uruchomić Eksploratora Windows.
| Liczba bitów | Stała maski bitów | Opis |
|---|---|---|
| 0x04 | DRIVE_REMOVEABLE | Dysk można usunąć z napędu (np. dyskietki). |
| 0x08 | DRIVE_FIXED | Nie można usunąć dysku z dysku (dysku twardego). |
| 0x10 | DRIVE_REMOTE | Dysk sieciowy. |
| 0x20 | DRIVE_CDROM | napęd CD-ROM |
| 0x40 | DRIVE_RAMDISK | Dysk RAM. |
AutoRun dla innych typów nośników danych
AutoRun jest głównie przeznaczony do publicznej dystrybucji aplikacji na CD-ROM i DVD-ROM, a jego użycie na innych nośnikach pamięci masowej jest niewskazane. Jednak często przydaje się włączenie funkcji AutoRun na innych typach wymiennych nośników danych. Ta funkcja jest zwykle używana upraszcza debugowanie plików AutoRun.inf. Funkcja AutoRun działa tylko na wymiennych urządzeniach magazynujących, gdy spełnione są następujące kryteria:
- Urządzenie musi mieć sterowniki zgodne z funkcją AutoRun. Aby był zgodny z funkcją AutoRun, sterownik musi powiadomić system, że dysk został wstawiony przez wysłanie komunikatu WM_DEVICECHANGE.
- Katalog główny wstawionego nośnika musi zawierać plik Autorun.inf.
- Urządzenie nie może mieć wyłączonej funkcji AutoRun poprzez rejestr .
- Aplikacja pierwszego planu nie pomijana AutoRun.
Notatka
Ta funkcja nie powinna być używana do dystrybucji aplikacji na nośnikach wymiennych. Ponieważ implementowanie funkcji AutoRun na nośnikach wymiennych zapewnia łatwy sposób rozprzestrzeniania wirusów komputerowych, użytkownicy powinni być podejrzani o wszelkie publicznie rozproszone dyskietki zawierające plik Autorun.inf.
Zwykle funkcja AutoRun jest uruchamiana automatycznie, ale można ją również uruchomić ręcznie. Jeśli urządzenie spełnia powyższe kryteria, menu skrótów litery dysku będzie zawierać polecenie Autoodtwarzanie. Aby uruchomić AutoRun ręcznie, kliknij prawym przyciskiem myszy ikonę dysku i wybierz AutoPlay z menu skrótów lub kliknij dwukrotnie ikonę dysku. Jeśli sterowniki nie są zgodne z funkcją AutoRun, menu skrótów nie będzie miało elementu AutoPlay i nie można uruchomić funkcji AutoRun.
Sterowniki zgodne z funkcją AutoRun są dostarczane z niektórymi dyskami wymiennymi, a także innymi typami nośników wymiennych, takich jak karty CompactFlash. Funkcja AutoRun współpracuje również z dyskami sieciowymi zamapowanymi na literę dysku za pomocą Eksploratora Windows lub zamontowanymi za pomocą programu Microsoft Management Console (MMC). Podobnie jak w przypadku zainstalowanego sprzętu, zainstalowany dysk sieciowy musi mieć plik Autorun.inf w katalogu głównym i nie może być wyłączony za pośrednictwem rejestru .