我想用写注册表的方法在
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
下建立一个
"MYEXE"="D:\\MYEXE\\MYEXE.EXE"
以使得D:\MYEXE\MYEXE.EXE能在开机时自动加载起动运行,应该怎么办?
改动注册表后原有的开机自动起动的程序应不受影响。
希望能有高手教我,最好能以函数、模块的方式给出原程序,谢谢大家的帮助,我会不胜感激的。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run]
下建立一个
"MYEXE"="D:\\MYEXE\\MYEXE.EXE"
以使得D:\MYEXE\MYEXE.EXE能在开机时自动加载起动运行,应该怎么办?
改动注册表后原有的开机自动起动的程序应不受影响。
希望能有高手教我,最好能以函数、模块的方式给出原程序,谢谢大家的帮助,我会不胜感激的。
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 LongPrivate Const HKEY_LOCAL_MACHINE = &H80000002
Private Const REG_SZ = 1Private Sub Command1_Click()
Dim hKey As Long
RegCreateKey HKEY_LOCAL_MACHINE, "SOFTWARE\Microsoft\Windows\CurrentVersion\Run", hKey
RegSetValueEx hKey, "MYEXE", 0, REG_SZ, ByVal "D:\\MYEXE\\MYEXE.EXE", Len("D:\\MYEXE\\MYEXE.EXE")End Sub
Dim lbuffer As Long, sbuffer As String, hKey As Long, ltype As Long, ldata As Long
'读取健值
Public Function getvalue(mainkey As Long, subkey As String, keyv As String, svalue) As Long
rtn = RegOpenKeyEx(mainkey, subkey, 0, KEY_READ, hKey)
If rtn <> ERROR_SUCCESS Then
getvalue = rtn
Exit Function
End If
rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ByVal 0, lbuffer)
getvalue = rtn
Select Case ltype
Case REG_SZ
lbuffer = 255
sbuffer = Space(lbuffer)
rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ByVal sbuffer, lbuffer)
getvalue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
If InStr(sbuffer, Chr(0)) <> 0 Then
svalue = Left(sbuffer, InStr(sbuffer, Chr(0)) - 1)
Else
svalue = ""
End If
Case REG_EXPAND_SZ
sbuffer = Space(lbuffer)
rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ByVal sbuffer, lbuffer)
getvalue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
svalue = Left(sbuffer, InStr(sbuffer, Chr(0)) - 1)
Case REG_DWORD
rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ldata, lbuffer)
getvalue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
svalue = ldata
Case REG_BINARY
rtn = RegQueryValueEx(hKey, keyv, 0, ltype, ldata, lbuffer)
getvalue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
svalue = ldata
End Select
RegCloseKey hKey
End Function
'设置健值
Public Function SetValue(mainkey As Long, subkey As String, keyv As String, ltype, svalue, lbuffer As Long) As Long
Dim ss As SECURITY_ATTRIBUTES
ss.nLength = Len(ss)
ss.lpSecurityDescriptor = 0
ss.bInheritHandle = True
rtn = RegCreateKeyEx(mainkey, subkey, 0, "", 0, KEY_WRITE, ss, hKey, S)
SetValue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
Select Case ltype
Case REG_SZ
lbuffer = Len(svalue)
rtn = RegSetValueEx(hKey, keyv, 0, ltype, ByVal svalue, lbuffer)
SetValue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
Case REG_EXPAND_SZ
lbuffer = Len(svalue)
rtn = RegSetValueEx(hKey, keyv, 0, ltype, ByVal svalue, lbuffer)
SetValue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
Case REG_DWORD
lbuffer = 4
rtn = RegSetValueExA(hKey, keyv, 0, ltype, svalue, lbuffer)
SetValue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
Case REG_BINARY
rtn = RegSetValueExA(hKey, keyv, 0, ltype, svalue, lbuffer)
SetValue = rtn
If rtn <> ERROR_SUCCESS Then
Exit Function
End If
End Select
RegCloseKey hKey
End Function
'打开键
Public Function OpenKey(mainkey As Long, subkey As String, ByVal ltype As Long, hKey As Long)
OpenKey = RegOpenKeyEx(mainkey, subkey, 0, ltype, hKey)
End Function
'关闭健
Public Function CloseKey(hKey As Long)
CloseKey = RegCloseKey(hKey)
End Function'删除健值
Public Function DeleteValue(mainkey As Long, subkey As String, keyv As String)
rtn = RegOpenKeyEx(mainkey, subkey, 0, KEY_WRITE, hKey)
If rtn = 0 Then
rtn = RegDeleteValue(hKey, keyv)
rtn = RegCloseKey(hKey)
End If
End Function
Public Function RegCreate(mainkey As Long, subkey As String, phkResult As Long, Create) As Boolean
On Error GoTo ErrShowDim lResult As Long
Dim SA As SECURITY_ATTRIBUTES
RegCreate = (RegCreateKeyEx(mainkey, subkey, 0, "", reg_option_non_volatite, key_all_access, SA, phkResult, Create) = ERROR_SUCCESS)
RegCloseKey phkResult
ErrShow:
If Err.Number <> 0 Then
RegCreate = False
End If
End Function这是一个模块里的内容,看看就明白了
的简单易懂,虽然他没改写成函数,呵,但是我能看懂,也能改成函数。
tshow(瑞科ROOM)的我想一定是写通用式的,但是没告诉我里面哪个是哪个,怎么用,我看得有点儿头晕晕的,呵。
我会认真看,认真学的,试完了明天来结贴,谢谢你们的帮助。
的简单易懂,虽然他没改写成函数,呵,但是我能看懂,也能改成函数。
tshow(瑞科ROOM)的我想一定是写通用式的,但是没告诉我里面哪个是哪个,怎么用,我看得有点儿头晕晕的,呵。
本来说明天来结贴的,呵,一试,然也的真不错,呵。
也感谢瑞科朋友的帮助,所以然也给了80瑞科给了20。如果瑞科能详细说明你的东东的话,也许我就要倒过来了,呵。
瑞科给我的东西我还要细细看以进一步提高,真心的谢谢你们的帮助,心里的感谢不是给多少分能表达的……:)