Aracılığıyla paylaş


Otomatik Çalıştırmayı Etkinleştirme ve Devre Dışı Bırakma

Otomatik Çalıştırma'nın geçici veya kalıcı olarak devre dışı bırakılması gereken birçok durum vardır. Örneğin, Otomatik Çalıştır çalışan bir uygulamanın çalışmasını engelleyebilir ve süre boyunca devre dışı bırakılması gerekir. Sistem, Otomatik Çalıştır'ı devre dışı bırakmak için çeşitli yollar sağlar.

Otomatik Çalıştırmayı Program Aracılığıyla Gizleme

AutoRun'un program aracılığıyla bastırılması gerekebilecek çeşitli durumlar vardır. İki örnek:

  • Uygulamanızın, kullanıcının Autorun.inf dosyası içerebilecek başka bir disk eklemesini gerektiren bir kurulum programı var.
  • Uygulamanızın işlemi sırasında kullanıcının Autorun.inf dosyası içerebilecek başka bir disk eklemesi gerekebilir.

Her iki durumda da, özgün uygulama devam ederken normalde başka bir uygulama başlatmak istemezsiniz.

Kullanıcılar, CD-ROM'unu eklediklerinde SHIFT tuşunu basılı tutarak Otomatik Çalıştır'ı el ile gizleyebilir. Ancak, genellikle kullanıcıya bağlı olarak değil program aracılığıyla bu işlemi işlemek tercih edilir.

Shell sürüm 4.70 ve üzeri olan sistemlerde, Windows ön plan penceresine "QueryCancelAutoPlay" iletisi gönderir. Uygulamanız Otomatik Çalıştır'ı engellemek için bu iletiyi yanıtlayabilir. Bu yaklaşım, ortak iletişim kutusu gibi sistem yardımcı programları tarafından Otomatik Çalıştır'ı devre dışı bırakmak için kullanılır.

Aşağıdaki kod parçaları, bu iletiyi ayarlamayı ve işlemeyi gösterir. Uygulamanızın ön plan penceresinde çalışıyor olması gerekir. İlk olarak, "QueryCancelAutoPlay" öğesini Bir Windows iletisi olarak kaydedin:

uMessage = RegisterWindowMessage(TEXT("QueryCancelAutoPlay"));

Bu iletiyi almak için uygulamanızın penceresi ön planda olmalıdır. İleti işleyicisi, Otomatik Çalıştır'ı iptal etmek için TRUE ve etkinleştirmek için FALSE döndürmelidir. Aşağıdaki kod parçası, Otomatik Çalıştır'ı devre dışı bırakmak için bu iletinin nasıl kullanılacağını gösterir.

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
        }
    }
}

Uygulamanız bir iletişim kutusu kullanıyorsa ve "QueryCancelAutoPlay" iletisine yanıt vermesi gerekiyorsa, sadece TRUE veya FALSEolarak döndüremez. Bunun yerine, nIndexDWL_MSGRESULTolarak ayarlanmış SetWindowLongçağrısı yapın. Otomatik çalıştırmayı iptal etmek için dwNewLong parametresini TRUE olarak ayarlayın ve etkinleştirmek için FALSE olarak ayarlayın. Örneğin, aşağıdaki örnek iletişim kutusu yordamı bir "QueryCancelAutoPlay" iletisi aldığında Otomatik Çalıştır'ı iptal eder.

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;               
        }
    } 

Otomatik Çalıştırmayı Devre Dışı Bırakmak için Kayıt Defterini Kullanma

AutoRun'un kalıcı olarak devre dışı bırakılması için kullanılabilecek iki kayıt defteri değeri vardır: NoDriveAutoRun ve NoDriveTypeAutoRun. İlk değer, belirtilen sürücü harfleri için Otomatik Çalıştır'ı, ikincisi ise bir sürücü sınıfı için Otomatik Çalıştır'ı devre dışı bırakır. Bu değerlerden biri, belirli bir cihaz için Otomatik Çalıştır'ı devre dışı bırakmak üzere ayarlanırsa devre dışı bırakılır.

Not

NoDriveAutoRun ve NoDriveTypeAutoRun değerleri yalnızca sistem yöneticileri tarafından tüm sistemin değerini test veya yönetim amacıyla değiştirmek üzere değiştirilmelidir. Uygulamalar bu değerleri değiştirmemelidir, bu nedenle bunları özgün değerlerine güvenilir bir şekilde geri yüklemenin bir yolu yoktur.

 

NoDriveAutoRun değeri, belirtilen sürücü harfleri için Otomatik Çalıştır'ı devre dışı bırakır. Bu, aşağıdaki anahtarın altında bulunan REG_DWORD veri değeridir:

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Policies
                  Explorer

Değerin ilk biti A: sürücüsüne, ikincisi B: sürücüsüne vb. karşılık gelir. Bir veya daha fazla sürücü harfi için Otomatik Çalıştır'ı devre dışı bırakmak için ilgili bitleri ayarlayın. Örneğin, A: ve C: sürücülerini devre dışı bırakmak için NoDriveAutoRun değerini 0x00000005olarak ayarlayın.

NoDriveTypeAutoRun değeri, bir sürücü sınıfı için Otomatik Çalıştır'ı devre dışı bırakır. Aynı anahtar altında bulunan REG_DWORD veya 4 baytlık REG_BINARY veri değeridir.

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Policies
                  Explorer

Bu değerin ilk baytının bitleri ayarlanarak, farklı sürücüler Otomatik Çalıştır ile çalışmaktan dışlanabilir.

Aşağıdaki tabloda, belirli bir sürücü türü için Otomatik Çalıştır'ı devre dışı bırakmak üzere NoDriveTypeAutoRun'un ilk baytında ayarlanabilen bitler ve bit maskesi sabitleri yer almaktadır. Değişiklikler etkili olmadan önce Windows Gezgini'ni yeniden başlatmanız gerekir.

Bit Numarası Bit Maskesi Sabiti Açıklama
0x04 Çıkarılabilir Sürücü Disk sürücüden (disket gibi) kaldırılabilir.
0x08 SABİT SÜRÜCÜ Disk sürücüden (sabit disk) kaldırılamaz.
0x10 DRIVE_REMOTE Ağ sürücüsü.
0x20 SÜRÜCÜ_CDROM CD-ROM sürücü.
0x40 SÜRÜCÜ_RAMDISK RAM disk

 

Diğer Depolama Medyası Türleri için Otomatik Çalıştır

AutoRun öncelikli olarak CD-ROM ve DVD-ROM üzerindeki uygulamaların genel dağıtımına yöneliktir ve diğer depolama ortamları için kullanılması önerilmez. Ancak, diğer çıkarılabilir depolama ortamlarında Otomatik Çalıştır'ı etkinleştirmek genellikle yararlıdır. Bu özellik genellikle AutoRun.inf dosyalarının hata ayıklamasını basitleştirir. Otomatik Çalıştır yalnızca aşağıdaki ölçütler karşılandığında çıkarılabilir depolama cihazlarında çalışır:

  • Cihazda Otomatik Çalıştır uyumlu sürücüler olmalıdır. Otomatik Çalıştır uyumlu olması için, sürücünün sisteme WM_DEVICECHANGE iletisi göndererek diskin eklendiğini bildirmesi gerekir.
  • Eklenen medyanın kök dizini bir Autorun.inf dosyası içermelidir.
  • Cihazda kayıt defteriaracılığıyla Otomatik Çalıştır devre dışı bırakılmamalıdır.
  • Ön plan uygulaması Otomatik Çalıştır gizlemedi.

Not

Bu özellik, uygulamaları çıkarılabilir medyaya dağıtmak için kullanılmamalıdır. Çıkarılabilir medyada AutoRun'un uygulanması bilgisayar virüslerini yaymak için kolay bir yol sağladığından, kullanıcıların Autorun.inf dosyası içeren herkese açık bir disketten şüphelenmesi gerekir.

 

Normalde, Otomatik Çalıştır otomatik olarak başlatılır, ancak el ile de başlatılabilir. Cihaz yukarıda listelenen ölçütleri karşılıyorsa, sürücü harfinin kısayol menüsünde Otomatik Kullan komutu bulunur. Otomatik Çalıştır'ı el ile çalıştırmak için sürücü simgesine sağ tıklayın ve kısayol menüsünden Otomatik Kullan seçin veya sürücü simgesine çift tıklayın. Sürücüler Otomatik Çalıştır uyumlu değilse, kısayol menüsünde Otomatik Kullan öğesi olmaz ve Otomatik Çalıştır başlatılamaz.

AutoRun uyumlu sürücüler, bazı çıkarılabilir disk sürücülerinin yanı sıra CompactFlash kartları gibi diğer bazı çıkarılabilir medya türleriyle birlikte sağlanır. AutoRun, Windows Gezgini'nde bir sürücü harfine eşlenen veya Microsoft Yönetim Konsolu (MMC)ile bağlanan ağ sürücüleriyle de çalışır. Bağlı donanımda olduğu gibi, bağlı bir ağ sürücüsünün kök dizininde bir Autorun.inf dosyası olmalıdır ve kayıt defteriaracılığıyla devre dışı bırakılmamalıdır.