Home > Visual Basic > Banyak cara menon-aktifkan CTRL+ALT+DEL di Win 2K/XP, mana yg Anda Pilih ?

Banyak cara menon-aktifkan CTRL+ALT+DEL di Win 2K/XP, mana yg Anda Pilih ?

January 4, 2010

Saya atau mungkin Anda juga heran kenapa untuk menon-aktifkan tombol CTRL+ALT+DEL di Win 2K/XP sedikit merepotkan, padahal kalo di keluarga windows 9xΒ  kan perintahnya sangat sederhana cukup seperti ini :

Private Declare Function SystemParametersInfo Lib "user32" Alias "SystemParametersInfoA" (ByVal uAction As Long, ByVal uParam As Long, ByVal lpvParam As Any, ByVal fuWinIni As Long) As Long
Private Const SPI_SETSCREENSAVERRUNNING = 97

Dim ret As Long

Private Sub Form_Load()
    ret = SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, 1, 0&, 0&) 'menonaktifkan CTRL + ALT + DEL
End Sub

Private Sub Form_Unload(Cancel As Integer)
    ret = SystemParametersInfo(SPI_SETSCREENSAVERRUNNING, 0, 0&, 0&) 'mengaktifkan kembali CTRL + ALT + DEL
End Sub

Gimana ? Simple kan? πŸ™‚

Oke kita langsung bahas saja beberapa cara untuk menonaktifkan CTRL + ALT + DEL di Win 2K/XP
Cara 1 – via registry
Informasi registry windows yang harus kita modifikasi adalah sebagai berikut :

User Key : [HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Policies\System]
Name     : DisableTaskMgr
Type     : REG_DWORD (DWORD Value)
Value    : (0 = default, 1 = disable Task Manager)

Berikut adalah kode lengkap untuk menonaktifkan CTRL + ALT + DEL via registry

Private Const HKEY_CURRENT_USER = &H80000001
Private Const REG_DWORD = 4

Private Sub disableTaskMgr(ByVal value As Boolean)
    Dim nBufferKey  As Long
    Dim nVal        As Long

    nVal = IIf(value, 1, 0)

    RegOpenKey HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Policies\System", nBufferKey
    RegSetValueEx nBufferKey, "DisableTaskMgr", 0, REG_DWORD, nVal, Len(nVal)
    RegCloseKey nBufferKey
End Sub

Private Sub Form_Load()
    Call disableTaskMgr(True)
End Sub

Cara pertama menurut saya kurang kren πŸ˜€ karena merupakan metode yang sudah sering digunakan oleh virus-virus lokal, ditambah kalau usernya login menggunakan user non administrator otomatis akan gagal menulis ke registry windows.

Cara 2 – Fungsi API (FindWindow, PostMessage dan DestroyWindow) + Timer

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function PostMessage Lib "user32" Alias "PostMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, lParam As Any) As Long
Private Declare Function DestroyWindow Lib "user32" (ByVal hwnd As Long) As Long

Private Sub killAppByHWND(ByVal hwnd As Long)
    On Error Resume Next

    PostMessage hwnd, &H10, 0, 0
    DestroyWindow hwnd
End Sub

Private Sub Timer1_Timer()
    Dim hwnd As Long

    hwnd = FindWindow(vbNullString, "Windows Task Manager")
    If hwnd <> 0 Then Call killAppByHWND(hwnd)
End Sub

Cara yang kedua ini program selalu melakukan pengecekan terhadap windows handle/process id dari Windows Task Manager, kalo ketangkep langsung dibunuh wihhhh sadis :cry:.

Cara yang kedua ini juga kurang kren karena masih menyisakan beberapa detik penampakan dari Windows Task Manager sebelum dibunuh.

Cara 3 – Modal terhadap dialog Task Manager (menggunakan eksternal library dsmodal.dll)
Oke apa sih yang dimaksud dengan proses modal ? Misalkan kita punya 2 form (Form1 dan Form2) kemudian di Form1 kita ketikkan kode berikut :

Private Sub Command1_Click()
    Form2.Show vbModal
End Sub

Apa yang terjadi ? Ternyata Form1 tidak aktif/enggak bisa diapa-apain selama Form2 masih aktif. Makanya dengan cara yang ketiga ini otomatis selama program kita masih aktif dialog Task Manager juga ENGGA BISA DIAPA-APAIN :D.

Contoh kode penggunaan library dsmodal.dll

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
Private Declare Function MakeModal Lib "dsmodal" (ByVal AppHwnd As Long, ByVal hwndDest As Long, Optional ByVal Beep As Long = 0) As Long

Private Sub Form_Unload(Cancel As Integer)
    Call MakeModal(0, 0) ' Release modale state
End Sub

Private Sub Timer1_Timer()
    Dim taskMgrHwnd As Long
    Dim ret         As Long

    taskMgrHwnd = FindWindow(vbNullString, "Windows Task Manager")
    If taskMgrHwnd <> 0 Then
        ret = MakeModal(Me.hwnd, taskMgrHwnd, 1)
        Timer1.Enabled = False
    End If
End Sub

Apa yang terjadi setelah kita menjalankan kode program diatas dan menekan tombol CTRL + ALT + DEL? Kalau mau tau download aja sourcenya disini

Cara 4 – Yang paling keren, ampuh dan disarankan oleh banyak para ahli yaitu menggunakan library ekternal WinLockDll.dll
Contoh penggunaannya :

Private Declare Function CtrlAltDel_Enable_Disable Lib "WinLockDll.dll" (ByVal bEnableDisable As Boolean) As Long

Private Sub cmdDisabledCtrlAltDel_Click()
    Call CtrlAltDel_Enable_Disable(False)
End Sub

Private Sub cmdEnabledCtrlAltDel_Click()
    Call CtrlAltDel_Enable_Disable(True)
End Sub

Cara ke 4 ini seampuh kita menonaktifkan CTRL + ALT + DEL di Windows 9x, sourcenya bisa didownload disini

Jangan lupa setelah mendownload file ubah ekstensinya menjadi RAR. Selamat mencoba πŸ™‚

  1. orangbener
    October 1, 2010 at 11:01 am

    Ini yg gw cari bro…. luar biasa, muter sana sini, semua gak supprot winxp, yang ini baru mantabbbb… thanks alot ya gan.. GBU..

    • October 4, 2010 at 12:56 am

      Sama2x om πŸ™‚

  2. Afdoal
    October 1, 2011 at 8:53 am

    bang, nanya lagi nih πŸ˜€

    kira2 ada gak aplikasi (klo memungkinkan contoh code VBnya ^_^) untuk membaca fungsi-fungsi apa aja yang tersedia di dalam file suatu file libraruy (file .dll)

    Misalnya, fungsi2 apa saja yang tersedia didalam library WinLockDll.dll

    teriam kasih bang.. sebelumnya πŸ˜€

    • October 2, 2011 at 4:16 am

      Pake tools Dependency Walker om

      • Afdoal
        October 3, 2011 at 7:33 am

        siap laksanakan bang.. πŸ˜€

        • October 3, 2011 at 12:16 pm

          Sippp πŸ™‚

  3. Afdoal
    October 5, 2011 at 2:58 pm

    btw, bisa minta class yang lengkap bwt baca,tambah,edit dan delete registry gak bang??
    soalnya bgg nih dari kemarin gagal terus baca, tambah, edit dan delet registrasi..
    terutama yang type REG_BINARY dan DWORD

    terima kasih bang.. sebelumnya

  4. October 6, 2011 at 9:34 am

    Wah klo ini report om, harus bongkar2x arsip jaman kuliah πŸ˜›

  5. afdoal
    October 6, 2011 at 10:10 am

    Admin :
    Wah klo ini report om, harus bongkar2x arsip jaman kuliah

    wah….
    klo gitu ayo bang…..
    di bongkar…..
    saya bantu dengan do’a kok…. πŸ˜€
    (mengharap mode on)

    • October 9, 2011 at 12:54 am
      Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
      Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
      Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
      
      Private Const REG_DWORD As Long = 4
      Private Const HKEY_CURRENT_USER As Long = &H80000001
      
      Private Sub regCreate_LongValue(ByVal hKey As Long, ByVal sRegKeyPath As String, ByVal sRegSubKey As String, lKeyValue As Long)
         Dim lKeyHandle As Long
         Dim lRet As Long
         Dim lDataType As Long
         lRet = RegCreateKey(hKey, sRegKeyPath, lKeyHandle)
         lRet = RegSetValueEx(lKeyHandle, sRegSubKey, 0&, REG_DWORD, lKeyValue, 4&)
         lRet = RegCloseKey(lKeyHandle)
      End Sub
      
      Private Sub Command1_Click()
          Call regCreate_LongValue(HKEY_CURRENT_USER, "Software\MyApp", "Key", 1)
      End Sub
      

      Untuk yg binary belum ketemu arsipnya om πŸ˜€

  6. toni
    May 3, 2012 at 7:53 pm

    saya malah bingung untuk mengaktipkan tombol ctrl pada keyboard……mhn bantuanya bos ………..

    • May 3, 2012 at 8:25 pm

      Kan tombol CTRLnya ada dua om, emg enggak bisa dua2xnya ?

  1. No trackbacks yet.
Comments are closed.