Mengaktifkan dan Menonaktifkan Jalankan Otomatis

Ada banyak situasi di mana AutoRun mungkin perlu dinonaktifkan sementara atau terus-menerus. Misalnya, AutoRun mungkin mengganggu pengoperasian aplikasi yang sedang berjalan dan perlu dinonaktifkan selama durasi tersebut. Sistem ini menyediakan beberapa cara untuk menonaktifkan AutoRun.

Menekan Jalankan Otomatis Secara Terprogram

Ada berbagai situasi di mana AutoRun mungkin perlu ditekan secara terprogram. Dua contohnya adalah:

  • Aplikasi Anda memiliki program penyetelan yang mengharuskan pengguna memasukkan diska lain yang mungkin berisi file Autorun.inf.
  • Selama operasi aplikasi Anda, pengguna mungkin perlu menyisipkan disk lain yang mungkin berisi file Autorun.inf.

Dalam kedua kasus, Anda biasanya tidak ingin meluncurkan aplikasi lain saat aslinya sedang berlangsung.

Pengguna dapat menekan AutoRun secara manual dengan menahan tombol SHIFT saat mereka memasukkan CD-ROM. Namun, biasanya lebih baik menangani operasi ini secara terprogram daripada tergantung pada pengguna.

Dengan sistem yang memiliki Shell versi 4.70 dan yang lebih baru, Windows mengirimkan pesan "QueryCancelAutoPlay" ke jendela latar depan. Aplikasi Anda dapat merespons pesan ini untuk menekan AutoRun. Pendekatan ini digunakan oleh utilitas sistem seperti kotak dialog Buka umum untuk menonaktifkan AutoRun.

Fragmen kode berikut menggambarkan cara menyiapkan dan menangani pesan ini. Aplikasi Anda harus berjalan di jendela latar depan. Pertama, daftarkan "QueryCancelAutoPlay" sebagai pesan Windows:

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

Jendela aplikasi Anda harus berada di latar depan untuk menerima pesan ini. Handler pesan harus mengembalikan TRUE untuk membatalkan AutoRun dan FALSE untuk mengaktifkannya. Fragmen kode berikut menggambarkan cara menggunakan pesan ini untuk menonaktifkan AutoRun.

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

Jika aplikasi Anda menggunakan kotak dialog dan perlu merespons pesan "QueryCancelAutoPlay", aplikasi tersebut tidak dapat mengembalikan TRUE atau FALSE. Sebagai gantinya, panggil SetWindowLong dengan nIndex diatur ke DWL_MSGRESULT. Atur parameter dwNewLong ke TRUE untuk membatalkan AutoRun, dan FALSE untuk mengaktifkannya. Misalnya, prosedur kotak dialog sampel berikut membatalkan AutoRun saat menerima pesan "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;               
        }
    } 

Menggunakan Registri untuk Menonaktifkan Jalankan Otomatis

Ada dua nilai registri yang dapat digunakan untuk menonaktifkan AutoRun secara terus-menerus: NoDriveAutoRun dan NoDriveTypeAutoRun. Nilai pertama menonaktifkan AutoRun untuk huruf drive tertentu dan yang kedua menonaktifkan AutoRun untuk kelas drive. Jika salah satu nilai ini diatur untuk menonaktifkan AutoRun untuk perangkat tertentu, nilai tersebut akan dinonaktifkan.

Catatan

Nilai NoDriveAutoRun dan NoDriveTypeAutoRun hanya boleh dimodifikasi oleh administrator sistem untuk mengubah nilai untuk seluruh sistem untuk tujuan pengujian atau administratif. Aplikasi tidak boleh memodifikasi nilai-nilai ini, karena tidak ada cara untuk memulihkannya dengan andal ke nilai aslinya.

 

Nilai NoDriveAutoRun menonaktifkan AutoRun untuk huruf drive tertentu. Ini adalah nilai data REG_DWORD, ditemukan di bawah kunci berikut:

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Policies
                  Explorer

Bit pertama dari nilai sesuai dengan drive A:, yang kedua ke B:, dan sebagainya. Untuk menonaktifkan AutoRun untuk satu atau beberapa huruf drive, atur bit yang sesuai. Misalnya, untuk menonaktifkan drive A: dan C: , atur NoDriveAutoRun ke 0x00000005.

Nilai NoDriveTypeAutoRun menonaktifkan AutoRun untuk kelas drive. Ini adalah nilai data REG_BINARY REG_DWORD atau 4 byte, yang ditemukan di bawah kunci yang sama.

HKEY_CURRENT_USER
   Software
      Microsoft
         Windows
            CurrentVersion
               Policies
                  Explorer

Dengan mengatur bit byte pertama nilai ini, drive yang berbeda dapat dikecualikan dari bekerja dengan AutoRun.

Tabel berikut memberikan bit dan konstanta bitmask, yang dapat diatur dalam byte pertama NoDriveTypeAutoRun untuk menonaktifkan AutoRun untuk jenis drive tertentu. Anda harus memulai ulang Windows Explorer sebelum perubahan diterapkan.

Nomor Bit Konstanta Bitmask Deskripsi
0x04 DRIVE_REMOVEABLE Disk dapat dihapus dari drive (seperti disket).
0x08 DRIVE_FIXED Diska tidak dapat dihapus dari kandar (hard disk).
0x10 DRIVE_REMOTE Drive jaringan.
0x20 DRIVE_CDROM Cd-ROM drive.
0x40 DRIVE_RAMDISK Disk RAM.

 

Jalankan Otomatis untuk Jenis Media Penyimpanan Lainnya

AutoRun terutama ditujukan untuk distribusi publik aplikasi pada CD-ROM dan DVD-ROM, dan penggunaannya tidak disarankan untuk media penyimpanan lainnya. Namun, sering kali berguna untuk mengaktifkan AutoRun pada jenis media penyimpanan lain yang dapat dilepas. Fitur ini biasanya digunakan untuk menyederhanakan penelusuran kesalahan file AutoRun.inf. AutoRun hanya berfungsi pada perangkat penyimpanan yang dapat dilepas saat kriteria berikut terpenuhi:

  • Perangkat harus memiliki driver yang kompatibel dengan AutoRun. Agar kompatibel dengan AutoRun, driver harus memberi tahu sistem bahwa disk telah dimasukkan dengan mengirim pesan WM_DEVICECHANGE .
  • Direktori akar media yang disisipkan harus berisi file Autorun.inf.
  • Perangkat tidak boleh menonaktifkan AutoRun melalui registri.
  • Aplikasi latar depan belum menekan AutoRun.

Catatan

Fitur ini tidak boleh digunakan untuk mendistribusikan aplikasi pada media yang dapat dilepas. Karena menerapkan AutoRun pada media yang dapat dilepas menyediakan cara mudah untuk menyebarkan virus komputer, pengguna harus mencurigakan dengan disket yang didistribusikan secara publik yang berisi file Autorun.inf.

 

Biasanya, AutoRun dimulai secara otomatis, tetapi juga dapat dimulai secara manual. Jika perangkat memenuhi kriteria yang tercantum di atas, menu pintasan huruf drive akan menyertakan perintah AutoPlay . Untuk menjalankan Jalankan Otomatis Secara Manual, klik kanan ikon drive dan pilih AutoPlay dari menu pintasan atau klik dua kali ikon drive. Jika driver tidak kompatibel dengan AutoRun, menu pintasan tidak akan memiliki item AutoPlay dan AutoRun tidak dapat dimulai.

Driver yang kompatibel dengan AutoRun disediakan dengan beberapa drive disk yang dapat dilepas, serta beberapa jenis media lain yang dapat dilepas seperti kartu CompactFlash. AutoRun juga berfungsi dengan drive jaringan yang dipetakan ke huruf kandar dengan Windows Explorer atau dipasang dengan Konsol Manajemen Microsoft (MMC). Seperti halnya perangkat keras yang dipasang, drive jaringan yang dipasang harus memiliki file Autorun.inf di direktori akarnya, dan tidak boleh dinonaktifkan melalui registri.