۰۹-مهر-۱۳۸۵, ۲۱:۴۴:۰۸
سوال 1-:ميخوام يه برنامه بنويسم . به محض اولين اجرا از خودش توي يه مسير معين كپي بگيره و با بالا آمدن ويندوز اجرا بشه .
من اين كد رو دارم ولي نميدونم چطوري كار ميكنه :
سوال 2: چطوري ميتونم درايوي رو كه ويندوز بر روي اون نصب شده تشخيس بدم؟ اينو اگه با API باشه ممنون ميشم يه يه راهي كه نخوام از كامپوننت استفاده كنم يا اگر هم استفاده كنم بتونم كامپوننت رو بزارم توي فرمم كه نخواد همراه نرم افزار اجرائي باشه
من اين كد رو دارم ولي نميدونم چطوري كار ميكنه :
کد:
-----------------------------------------------------------------
Private Type SECURITY_ATTRIBUTES
nLength As Long
lpSecurityDescriptor As Long
bInheritHandle As Long
End Type
-----------------------------------------------------------------
Private Declare Function RegCreateKeyEx Lib "advapi32.dll" _
Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal _
lpSubKey As String, ByVal Reserved As Long, ByVal _
lpClass As String, ByVal dwOptions As Long, ByVal _
samDesired As Long, lpSecurityAttributes _
As SECURITY_ATTRIBUTES, phkResult As Long, _
lpdwDisposition 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 Declare Function RegOpenKeyEx Lib _
"advapi32.dll" Alias "RegOpenKeyExA" (ByVal _
hKey As Long, ByVal lpSubKey As String, ByVal _
ulOptions As Long, ByVal samDesired As Long, _
phkResult As Long) As Long
-----------------------------------------------------------------
Private Declare Function RegDeleteValue Lib _
"advapi32.dll" Alias "RegDeleteValueA" (ByVal _
hKey As Long, ByVal lpValueName As String) As Long
-----------------------------------------------------------------
Const REG_OPTION_VOLATILE = 1 ' Key is not preserved when system is rebooted
Const REG_OPTION_NON_VOLATILE = 0 ' Key is preserved when system is rebooted
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_DYN_DATA = &H80000006
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_USERS = &H80000003
Const KEY_WRITE = &H20006
Const REG_SZ = 1
Const KEY_ALL_ACCESS = &HF003F
Const REG_BINARY = 3
Const REG_DWORD = 4
Const KEY_READ = &H20019
----------------------------------------------------------------------------------------------------------------------------------
Private Sub Command1_Click()
Dim hKey As Long
Dim secattr As SECURITY_ATTRIBUTES
Dim subkey As String
Dim neworused As Long
Dim stringbuffer1 As String
Dim stringbuffer2 As String
Dim retval As Long
subkey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Run\Startup"
secattr.nLength = Len(secattr)
secattr.lpSecurityDescriptor = 0
secattr.bInheritHandle = 1
retval = RegCreateKeyEx(HKEY_LOCAL_MACHINE, subkey, 0, "", 0, KEY_WRITE, secattr, hKey, neworused)
If retval <> 0 Then
Exit Sub
End If
stringbuffer1 = "ادرس فايل اجرايي .. پسوندش رو يادتون نره" & vbNullChar
retval = RegSetValueEx(hKey, "Default", 0, REG_SZ, ByVal stringbuffer1, Len(stringbuffer1))
Form1.BackColor = vbRed
End Sub
سوال 2: چطوري ميتونم درايوي رو كه ويندوز بر روي اون نصب شده تشخيس بدم؟ اينو اگه با API باشه ممنون ميشم يه يه راهي كه نخوام از كامپوننت استفاده كنم يا اگر هم استفاده كنم بتونم كامپوننت رو بزارم توي فرمم كه نخواد همراه نرم افزار اجرائي باشه