Aktivieren und Deaktivieren der automatischen Ausführung
Es gibt viele Situationen, in denen autoRun vorübergehend oder dauerhaft deaktiviert werden muss. Beispielsweise kann die automatische Ausführung den Betrieb einer ausgeführten Anwendung beeinträchtigen und muss für die Dauer deaktiviert werden. Das System bietet mehrere Möglichkeiten zum Deaktivieren der automatischen Ausführung.
- Programmgesteuertes Unterdrücken der automatischen Ausführung
- Verwenden der Registrierung zum Deaktivieren der automatischen Ausführung
- AutoRun für andere Speichermedientypen
Programmgesteuertes Unterdrücken der automatischen Ausführung
Es gibt eine Vielzahl von Situationen, in denen autoRun möglicherweise programmgesteuert unterdrückt werden muss. Zwei Beispiele:
- Ihre Anwendung verfügt über ein Setupprogramm, das erfordert, dass der Benutzer einen anderen Datenträger einfügt, der möglicherweise eine Autorun.inf-Datei enthält.
- Während des Vorgangs Ihrer Anwendung muss der Benutzer möglicherweise einen weiteren Datenträger einfügen, der möglicherweise eine Autorun.inf-Datei enthält.
In beiden Fällen möchten Sie normalerweise keine andere Anwendung starten, während das Original ausgeführt wird.
Benutzer können autoRun manuell unterdrücken, indem sie beim Einlegen der CD-ROM die UMSCHALTTASTE gedrückt halten. Es ist jedoch in der Regel besser, diesen Vorgang programmgesteuert zu behandeln, anstatt vom Benutzer abhängig zu sein.
Bei Systemen mit Shell-Version 4.70 und höher sendet Windows die Meldung "QueryCancelAutoPlay" an das Vordergrundfenster. Ihre Anwendung kann auf diese Nachricht reagieren, um die automatische Ausführung zu unterdrücken. Dieser Ansatz wird von Systemhilfsprogrammen wie dem Dialogfeld Allgemeines öffnen verwendet, um autoRun zu deaktivieren.
Die folgenden Codefragmente veranschaulichen, wie diese Meldung eingerichtet und behandelt wird. Ihre Anwendung muss im Vordergrundfenster ausgeführt werden. Registrieren Sie zunächst "QueryCancelAutoPlay" als Windows-Nachricht:
uMessage = RegisterWindowMessage(TEXT("QueryCancelAutoPlay"));
Das Fenster Ihrer Anwendung muss sich im Vordergrund befinden, um diese Nachricht empfangen zu können. Der Nachrichtenhandler sollte TRUE zurückgeben, um die automatische Ausführung abzubrechen, und FALSE , um sie zu aktivieren. Das folgende Codefragment veranschaulicht, wie Sie diese Meldung verwenden, um autoRun zu deaktivieren.
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
}
}
}
Wenn Ihre Anwendung ein Dialogfeld verwendet und auf die Meldung "QueryCancelAutoPlay" reagieren muss, kann sie nicht einfach TRUE oder FALSE zurückgeben. Rufen Sie stattdessen SetWindowLong auf, wobei nIndex auf DWL_MSGRESULT festgelegt ist. Legen Sie den dwNewLong-Parameter auf TRUE fest, um die automatische Ausführung abzubrechen, und auf FALSE , um es zu aktivieren. Die folgende Beispieldialogfeldprozedur bricht z. B. die Automatische Ausführung ab, wenn die Meldung "QueryCancelAutoPlay" empfangen wird.
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;
}
}
Verwenden der Registrierung zum Deaktivieren der automatischen Ausführung
Es gibt zwei Registrierungswerte, die verwendet werden können, um AutoRun dauerhaft zu deaktivieren: NoDriveAutoRun und NoDriveTypeAutoRun. Der erste Wert deaktiviert AutoRun für angegebene Laufwerkbuchstaben, und der zweite deaktiviert AutoRun für eine Klasse von Laufwerken. Wenn einer dieser Werte für die Deaktivierung der automatischen Ausführung für ein bestimmtes Gerät festgelegt ist, wird es deaktiviert.
Hinweis
Die Werte NoDriveAutoRun und NoDriveTypeAutoRun sollten nur von Systemadministratoren geändert werden, um den Wert für das gesamte System zu Test- oder Verwaltungszwecken zu ändern. Anwendungen sollten diese Werte nicht ändern, da es keine Möglichkeit gibt, sie zuverlässig auf ihre ursprünglichen Werte wiederherzustellen.
Der NoDriveAutoRun-Wert deaktiviert AutoRun für angegebene Laufwerkbuchstaben. Es handelt sich um einen REG_DWORD Datenwert, der sich unter dem folgenden Schlüssel befindet:
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Policies
Explorer
Das erste Bit des Werts entspricht Laufwerk A:, das zweite zu B:usw. Um AutoRun für einen oder mehrere Laufwerkbuchstaben zu deaktivieren, legen Sie die entsprechenden Bits fest. Um beispielsweise die Laufwerke A: und C: zu deaktivieren, legen Sie NoDriveAutoRun auf fest 0x00000005
.
Der NoDriveTypeAutoRun-Wert deaktiviert AutoRun für eine Klasse von Laufwerken. Es handelt sich um einen REG_DWORD- oder 4-Byte-REG_BINARY Datenwert, der sich unter demselben Schlüssel befindet.
HKEY_CURRENT_USER
Software
Microsoft
Windows
CurrentVersion
Policies
Explorer
Durch Festlegen der Bits des ersten Bytes dieses Werts können verschiedene Laufwerke von der Arbeit mit AutoRun ausgeschlossen werden.
Die folgende Tabelle enthält die Bit- und Bitmaskenkonstanten, die im ersten Byte von NoDriveTypeAutoRun festgelegt werden können, um AutoRun für einen bestimmten Laufwerkstyp zu deaktivieren. Sie müssen Windows-Explorer neu starten, bevor die Änderungen wirksam werden.
Bitnummer | Bitmaskenkonstante | BESCHREIBUNG |
---|---|---|
0x04 | DRIVE_REMOVEABLE | Datenträger können vom Laufwerk entfernt werden (z. B. ein Diskettendatenträger). |
0x08 | DRIVE_FIXED | Der Datenträger kann nicht vom Laufwerk (einer Festplatte) entfernt werden. |
0x10 | DRIVE_REMOTE | Netzlaufwerk. |
0x20 | DRIVE_CDROM | CD-ROM-Laufwerk |
0x40 | DRIVE_RAMDISK | RAM-Datenträger. |
AutoRun für andere Speichermedientypen
AutoRun ist in erster Linie für die öffentliche Verteilung von Anwendungen auf CD-ROM und DVD-ROM vorgesehen, und die Verwendung für andere Speichermedien wird abgeraten. Es ist jedoch häufig hilfreich, autoRun auf anderen Typen von Wechselmedien zu aktivieren. Dieses Feature wird in der Regel verwendet, um das Debuggen von AutoRun.inf-Dateien zu vereinfachen. AutoRun funktioniert nur auf Wechselmedien, wenn die folgenden Kriterien erfüllt sind:
- Das Gerät muss über AutoRun-kompatible Treiber verfügen. Um autoRun-kompatibel zu sein, muss ein Treiber das System benachrichtigen, dass ein Datenträger eingefügt wurde, indem er eine WM_DEVICECHANGE Nachricht sendet.
- Das Stammverzeichnis des eingefügten Mediums muss eine Autorun.inf-Datei enthalten.
- Auf dem Gerät darf AutoRun nicht über die Registrierung deaktiviert sein.
- Die Vordergrundanwendung hat die automatische Ausführung nicht unterdrückt .
Hinweis
Dieses Feature sollte nicht verwendet werden, um Anwendungen auf Wechselmedien zu verteilen. Da die Implementierung von AutoRun auf Wechselmedien eine einfache Möglichkeit zur Verbreitung von Computerviren bietet, sollten Benutzer gegenüber allen öffentlich verteilten Disketten, die eine Autorun.inf-Datei enthalten, misstrauisch sein.
Normalerweise wird AutoRun automatisch gestartet, kann aber auch manuell gestartet werden. Wenn das Gerät die oben aufgeführten Kriterien erfüllt, enthält das Kontextmenü des Laufwerkbuchstabens einen Befehl zur automatischen Wiedergabe . Klicken Sie zum manuellen Ausführen von AutoRun entweder mit der rechten Maustaste auf das Laufwerkssymbol, und wählen Sie im Kontextmenü Die Option Automatische Wiedergabe aus, oder doppelklicken Sie auf das Laufwerksymbol. Wenn die Treiber nicht autoRun-kompatibel sind, enthält das Kontextmenü kein Element für die automatische Wiedergabe , und Die automatische Ausführung kann nicht gestartet werden.
AutoRun-kompatible Treiber werden mit einigen Wechseldatenträgern sowie einigen anderen Wechselmedientypen wie CompactFlash-Karten bereitgestellt. AutoRun funktioniert auch mit Netzwerklaufwerken, die mit Windows-Explorer einem Laufwerkbuchstaben zugeordnet oder mit der Microsoft Management Console (MMC) bereitgestellt werden. Wie bei bereitgestellter Hardware muss ein eingebundenes Netzwerklaufwerk über eine Autorun.inf-Datei im Stammverzeichnis verfügen und darf nicht über die Registrierung deaktiviert werden.