如何在VB 6.0中创建注册表设置? [英] How do I create registry setting in VB 6.0?

查看:84
本文介绍了如何在VB 6.0中创建注册表设置?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我需要在SchUseStrongCrypto创建以下Key

HKEY_LOCAL_MACHINE\SOFTWARE \ Wow6432Node\Microsoft\.NETFramework\v4.0.30319

HKEY_LOCAL_MACHINE \ SOFTWARE\Microsoft\.NETFramework\v4.0.30319



任何人都可以帮我解决这个问题



我尝试过:



选项明确



Private Const REG_SZ As Long = 1'REG_SZ表示固定长度的文本字符串。

Private Const REG_DWORD As Long = 4'REG_DWORD用4字节长的数字表示数据。



Private Const HKEY_CLASSES_ROOT =& H80000000'此处存储的信息可确保在使用Windows资源管理器打开文件时打开正确的程序。

Private Const HKEY_CURRENT_USER =& H80000001'包含当前登录用户的配置信息的根目录。 />
Private Const HKEY_LOCAL_MACHINE =& H80000002'包含特定于计算机的配置信息(适用于任何用户)。

Private Const HKEY_USERS =& H80000003'包含所有用户配置文件的根目录在计算机上。



'所有注册表函数的返回值

Private Const ERROR_SUCCESS = 0

Private Const ERROR_NONE = 0



私有Const KEY_QUERY_VALUE =& H1'查询注册表项的值是必需的。

Private Const KEY_ALL_ACCESS =& ; H3F'结合STANDARD_RIGHTS_REQUIRED,KEY_QUERY_VALUE,KEY_SET_VALUE,KEY_CREATE_SUB_KEY,KEY_ENUMERATE_SUB_KEYS,KEY_NOTIFY和KEY_CREATE_LINK访问权限。





'API呼叫写入注册表

'关闭注册表项

私有声明函数RegCloseKey Libadvapi32.dll(ByVal hKey As Long)As Long

'创建注册表项

私有声明函数RegCreateKey Libadvapi32.dll别名RegCreateKeyA(ByVal hKey As Long,ByVal lpSubKey As String,phkResult As Long)As Long

'Open Registry Key

私有声明函数RegOpenKeyEx Libadvapi32.dll别名RegOpenKeyExA(ByVal hKey As Long,ByVal lpSubKey As String,ByVal ulOptions As Long,ByVal sam Desired As long,phkResult As Long)As Long

'查询字符串值

私有声明函数RegQueryValueExString Libadvapi32.dll别名RegQueryValueExA(ByVal hKey为Long,ByVal lpValueName为String,ByVal lpReserved为Long,lpType为Long ,ByVal lpData As String,lpcbData As Long)As Long

'查询长值

私有声明函数RegQueryValueExLong Libadvapi32.dll别名RegQueryValueExA(ByVal hKey作为Long,ByVal lpValueName As String,ByVal lpReserved As Long,lpType As Long,lpData As Long,lpcbData As Long)As Long

'查询NULL V alue

私有声明函数RegQueryValueExNULL Libadvapi32.dll别名RegQueryValueExA(ByVal hKey为Long,ByVal lpValueName为String,ByVal lpReserved为Long,lpType为Long,ByVal lpData为Long,lpcbData As Long)As Long

'枚举子键

私有声明函数RegEnumKey Libadvapi32.dll别名RegEnumKeyA(ByVal hKey As Long,ByVal dwIndex As Long,ByVal lpName As String,ByVal cbName As Long)As long

'存储值

私有声明函数RegSetValueEx Libadvapi32.dll别名RegSetValueExA(ByVal hKey As Long ,ByVal lpValueName As String,ByVal保留为Long,ByVal dwType为Long,lpData为Any,ByVal cbData As Long)As Long

'删除密钥

私有声明函数RegDeleteKey Libadvapi32.dll别名RegDeleteKeyA(ByVal hKey As Long,ByVal lpSubKey As String)As Long



Private Sub SaveValue(hKey As Long,strPath As String ,strvalue As String,strData As String)



Dim ret

'创建一个新密钥

RegCreateKey hKey,strPath,返回

'将字符串保存到键中

RegSetValueEx ret,strvalue,0,REG_DWORD,ByVal strData,Len(strData)

'关闭钥匙

RegCloseKey ret



End Sub



Private Sub QueryValue( sKeyName As String,sValueName As String)



Dim lRetVal由于API函数的结果很长

Dim hKey As Long'打开的句柄key

Dim vValue As Variant'查询值的设置

Dim Data As Long

Dim retval As Long'返回值RegQuery函数

Dim lType As Long'确定当前数据的数据类型

Dim lValue As Long'Long值

Dim sValue As String'String value



lRetVal = RegOpenKeyEx(HKEY_LOCAL_MACH INE,sKeyName,0,KEY_QUERY_VALUE,hKey)'打开键查询值

'Manowara已更改

'lRetVal = QueryValueEx(hKey,sValueName,vValue)'查询(确定)存储的值

retval = RegQueryValueExNULL(hKey,sValueName,0&,lType,0&,Data)

如果retval<> ERROR_NONE然后MsgBoxRegisrt Key不存在

如果retval = ERROR_NONE那么

选择Case lType

'确定字符串

案例REG_SZ:

sValue =字符串(数据,0)



retval = RegQueryValueExString(hKey,sValueName,0& ,lType,sValue,Data)



如果retval = ERROR_NONE那么

vValue =左$(s值,数据-1)
Else

vValue =空

结束如果



'确定DWORDS

Case REG_DWORD:

retval = RegQueryValueExLong(hKey,sValueName,0&,lType,lValue,Data)



如果retval = ERROR_NONE然后vValue = lValue



Case Else

'不支持所有其他数据类型

retval = -1

结束选择



' frmRegistryChng.Caption = vValue'将表单的标题设置为存储的任何文本

MsgBox存在Regisrt设置



RegCloseKey(hKey) '关闭密钥

结束如果

调用SaveValue(HKEY_LOCAL_MACHINE,Software \ Microsoft \ .NETFramework \v4.0.30319,SchUseStrongCrypto,9999 )'调用SaveValue Sub在注册表中保存一个值



结束子







Private Sub Command1_Click()



QueryValueSoftware\Microsoft\.NETFramework\v4.0.30319, SchUseStrongCrypto



结束Sub

I need to create the following Key at SchUseStrongCrypto
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\.NETFramework\v4.0.30319
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\v4.0.30319

Can any one please help me how to proceed with it

What I have tried:

Option Explicit

Private Const REG_SZ As Long = 1 'REG_SZ represents a fixed-length text string.
Private Const REG_DWORD As Long = 4 'REG_DWORD represents data by a number that is 4 bytes long.

Private Const HKEY_CLASSES_ROOT = &H80000000 'The information stored here ensures that the correct program opens when you open a file by using Windows Explorer.
Private Const HKEY_CURRENT_USER = &H80000001 'Contains the root of the configuration information for the user who is currently logged on.
Private Const HKEY_LOCAL_MACHINE = &H80000002 'Contains configuration information particular to the computer (for any user).
Private Const HKEY_USERS = &H80000003 'Contains the root of all user profiles on the computer.

'Return values for all registry functions
Private Const ERROR_SUCCESS = 0
Private Const ERROR_NONE = 0

Private Const KEY_QUERY_VALUE = &H1 'Required to query the values of a registry key.
Private Const KEY_ALL_ACCESS = &H3F 'Combines the STANDARD_RIGHTS_REQUIRED, KEY_QUERY_VALUE, KEY_SET_VALUE, KEY_CREATE_SUB_KEY, KEY_ENUMERATE_SUB_KEYS, KEY_NOTIFY, and KEY_CREATE_LINK access rights.


'API Calls for writing to Registry
'Close Registry Key
Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
'Create Registry Key
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
'Open Registry Key
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
'Query a String Value
Private Declare Function RegQueryValueExString Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As String, lpcbData As Long) As Long
'Query a Long Value
Private Declare Function RegQueryValueExLong Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Long, lpcbData As Long) As Long
'Query a NULL Value
Private Declare Function RegQueryValueExNULL Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, ByVal lpData As Long, lpcbData As Long) As Long
'Enumerate Sub Keys
Private Declare Function RegEnumKey Lib "advapi32.dll" Alias "RegEnumKeyA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, ByVal cbName As Long) As Long
'Store a Value
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
'Delete Key
Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long

Private Sub SaveValue(hKey As Long, strPath As String, strvalue As String, strData As String)

Dim ret
'Create a new key
RegCreateKey hKey, strPath, ret
'Save a string to the key
RegSetValueEx ret, strvalue, 0, REG_DWORD, ByVal strData, Len(strData)
'close the key
RegCloseKey ret

End Sub

Private Sub QueryValue(sKeyName As String, sValueName As String)

Dim lRetVal As Long 'result of the API functions
Dim hKey As Long 'handle of opened key
Dim vValue As Variant 'setting of queried value
Dim Data As Long
Dim retval As Long 'Return value of RegQuery functions
Dim lType As Long 'Determine data type of present data
Dim lValue As Long 'Long value
Dim sValue As String 'String value

lRetVal = RegOpenKeyEx(HKEY_LOCAL_MACHINE, sKeyName, 0, KEY_QUERY_VALUE, hKey) 'Open Key to Query a value
'Manowara Changed
' lRetVal = QueryValueEx(hKey, sValueName, vValue) 'Query (determine) the value stored
retval = RegQueryValueExNULL(hKey, sValueName, 0&, lType, 0&, Data)
If retval <> ERROR_NONE Then MsgBox "The Regisrt Key is not existing exist"
If retval = ERROR_NONE Then
Select Case lType
' Determine strings
Case REG_SZ:
sValue = String(Data, 0)

retval = RegQueryValueExString(hKey, sValueName, 0&, lType, sValue, Data)

If retval = ERROR_NONE Then
vValue = Left$(sValue, Data - 1)
Else
vValue = Empty
End If

' Determine DWORDS
Case REG_DWORD:
retval = RegQueryValueExLong(hKey, sValueName, 0&, lType, lValue, Data)

If retval = ERROR_NONE Then vValue = lValue

Case Else
'all other data types not supported
retval = -1
End Select

'frmRegistryChng.Caption = vValue 'Set the Form's Caption to whatever text was stored
MsgBox "The Regisrt Settings exist"

RegCloseKey (hKey) 'Close the Key
End If
Call SaveValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\.NETFramework\v4.0.30319", "SchUseStrongCrypto", "9999") 'Call SaveValue Sub to save a value in the Registry

End Sub



Private Sub Command1_Click()

QueryValue "Software\Microsoft\.NETFramework\v4.0.30319", "SchUseStrongCrypto"

End Sub

推荐答案

(sValue,Data - 1)

否则

vValue =空

结束如果



'确定DWORDS

案例REG_DWORD:

retval = RegQueryValueExLong(hKey,sValueName,0& ;,lType,lValue,Data)



如果retval = ERROR_NONE则vValue = lValue



Case Else

'不支持所有其他数据类型

retval = -1

结束选择



'frmRegistryChng.Caption = vValue'将表单的标题设置为存储的任何文本

MsgBox存在Regisrt设置



RegCloseKey(hKey)'关闭密钥

结束如果

调用SaveValue(HKEY_LOCAL_MACHINE,Software\Microsoft \.NETFramework \v4.0.30319,SchUseStrongCrypto ,9999)'调用SaveValue Sub在注册表中保存值



结束子







私人子Command1_Click()



QueryValueSoftware\Microsoft\.NETFramework\v4.0.30319,SchUseStrongCrypto



End Sub
(sValue, Data - 1)
Else
vValue = Empty
End If

' Determine DWORDS
Case REG_DWORD:
retval = RegQueryValueExLong(hKey, sValueName, 0&, lType, lValue, Data)

If retval = ERROR_NONE Then vValue = lValue

Case Else
'all other data types not supported
retval = -1
End Select

'frmRegistryChng.Caption = vValue 'Set the Form's Caption to whatever text was stored
MsgBox "The Regisrt Settings exist"

RegCloseKey (hKey) 'Close the Key
End If
Call SaveValue(HKEY_LOCAL_MACHINE, "Software\Microsoft\.NETFramework\v4.0.30319", "SchUseStrongCrypto", "9999") 'Call SaveValue Sub to save a value in the Registry

End Sub



Private Sub Command1_Click()

QueryValue "Software\Microsoft\.NETFramework\v4.0.30319", "SchUseStrongCrypto"

End Sub


基本上:不要。在现代操作系统中,对注册表的访问受到限制,并且会受到更多限制,而不是更少。您不应该尝试在新项目中使用Registry,而应该将数据存储在配置文件中。
Basically: don't. Access to the Registry is restricted in modern OSes and will get more restricted, not less. You should not be trying to use the Registry in new projects, you should store your data in configuration files instead.


这篇关于如何在VB 6.0中创建注册表设置?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆