搜尋此網誌

2008年9月4日 星期四

VB 利用 API 控制登錄檔,使Windows系統自動登入

因為寫了一個暈倒死小改工具,裡面有一項是使Windows XP或者Vista自動登入的修改,因為有密碼輸入選項,或許會有人有疑慮,其實也大可不必輸入密碼,讓他自動登入,只是考慮到或許有人不想用 Administrator的名稱登入,才多出一個Text讓人輸入你要的名字跟密碼,當然現在有很多的自動安裝XP都已經是預設自動登入,但畢竟還是用 Administrator,如果已經有自動登入又不想搞的太複雜,那就不必麻煩了,如果不知道為什麼系統變成沒有自動登入或者想改名稱自動登入的話可下載暈倒死小改工具

以下為修改自動登入的VB6程式碼部分:

'宣告API
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 RegOpenKey Lib "advapi32.dll" Alias "RegOpenKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long


'宣告常數
Const REG_SZ As Long = 1
Const HKEY_LOCAL_MACHINE = &H80000002
Public s1 As String, s2 As String, s3 As String
Dim ret1 As Long


'執行
Private Sub Command1_Click()
s1 = Text1(0) : s2 = Text1(1)
ret1 = RegOpenKey(HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon", hKey)
If ret1 = 0 Then
s1 = "1"
sValue = "1"
sValueName = "AutoAdminLogon"
RegSetValueEx hKey, sValueName, 0, REG_SZ, ByVal sValue, Len(sValue) + 1
RegSetValueEx hKey, "AutoAdminLogon", "1", REG_SZ, ByVal s1, LenB(s1) '自動登入控制,sValue的值為1表示要設定為自動登入
RegSetValueEx hKey, "DefaultUserName", "0", REG_SZ, ByVal s2, LenB(s2) '使用者名稱
RegSetValueEx hKey, "DefaultPassword", "0", REG_SZ, ByVal s3, LenB(s3) '使用者密碼
End If
MsgBox "設定成功,Windows自動登入,使用目前使用者名稱及密碼", , "bdhiphop提示視窗"
End Sub

沒有留言:

張貼留言