vbs 注册表操作类代码

代码如下:

Option Explicit
Const WBEM_MAX_WAIT = &H80
' Registry Hives
Const HKEY_LOCAL_MACHINE = &H80000002
Const HKEY_CURRENT_USER = &H80000001
Const HKEY_CLASSES_ROOT = &H80000000
Const HKEY_USERS = &H80000003
Const HKEY_CURRENT_CONFIG = &H80000005
Const HKEY_DYN_DATA = &H80000006

' Reg Value Types
Const REG_SZ = 1
Const REG_EXPAND_SZ = 2
Const REG_BINARY = 3
Const REG_DWORD = 4
Const REG_MULTI_SZ = 7

' Registry Permissions
Const KEY_QUERY_VALUE = &H00001
Const KEY_SET_VALUE = &H00002
Const KEY_CREATE_SUB_KEY = &H00004
Const KEY_ENUMERATE_SUB_KEYS = &H00008
Const KEY_NOTIFY = &H00016
Const KEY_CREATE = &H00032
Const KEY_DELETE = &H10000
Const KEY_READ_CONTROL = &H20000
Const KEY_WRITE_DAC = &H40000
Const KEY_WRITE_OWNER = &H80000

Class std_registry
Private Sub Class_Initialize()
Set objRegistry = Nothing
End Sub

' Connect to the reg provider for this registy object
Public Function ConnectProvider32( sComputerName )
ConnectProvider32 = False
Set objRegistry = Nothing
'On Error Resume Next
Dim oLoc : Set oLoc = CreateObject("Wbemscripting.SWbemLocator")
Dim oCtx : Set oCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
' Force 64 Bit Registry
Call oCtx.Add("__ProviderArchitecture", 32 )
Call oCtx.Add("__RequiredArchitecture", True)
Dim oSvc : Set oSvc = oLoc.ConnectServer(sComputerName,"root\default","","",,,WBEM_MAX_WAIT,oCtx)
Set objRegistry = oSvc.Get("StdRegProv")
If Err.Number = 0 Then
ConnectProvider32 = True
End If
End Function

' Connect to the reg provider for this registy object
Public Function ConnectProvider64( sComputerName )
ConnectProvider64 = False
Set objRegistry = Nothing
On Error Resume Next
Dim oLoc : Set oLoc = CreateObject("Wbemscripting.SWbemLocator")
Dim oCtx : Set oCtx = CreateObject("WbemScripting.SWbemNamedValueSet")
' Force 64 Bit Registry
Call oCtx.Add("__ProviderArchitecture", 64 )
Call oCtx.Add("__RequiredArchitecture", True)
Dim oSvc : Set oSvc = oLoc.ConnectServer(sComputerName,"root\default","","",,,WBEM_MAX_WAIT,oCtx)
Set objRegistry = oSvc.Get("StdRegProv")
If Err.Number = 0 Then
ConnectProvider64 = True
End If
End Function

Public Function IsValid()
IsValid = Eval( Not objRegistry Is Nothing )
End Function

' Used to read values from the registry, Returns 0 for success, all else is error
' ByRef data contains the registry value if the functions returns success
' The constants can be used for the sRootKey value:
' HKEY_LOCAL_MACHINE
' HKEY_CURRENT_USER
' HKEY_CLASSES_ROOT
' HKEY_USERS
' HKEY_CURRENT_CONFIG
' HKEY_DYN_DATA
' The constants can be used for the sType value:
' REG_SZ
' REG_MULTI_SZ
' REG_EXPAND_SZ
' REG_BINARY
' REG_DWORD
Public Function ReadValue(ByVal hkRoot , ByVal nType , ByVal sKeyPath, ByVal sValueName , ByRef Data)
On Error Resume Next
ReadValue = -1
Dim bReturn, Results
If hkRoot = HKEY_LOCAL_MACHINE Or hkRoot = HKEY_CURRENT_USER Or hkRoot = HKEY_CLASSES_ROOT Or hkRoot = HKEY_USERS Or hkRoot = HKEY_CURRENT_CONFIG Or hkRoot = HKEY_DYN_DATA Then
'Read Value
Select Case nType
Case REG_SZ
ReadValue = objRegistry.GetStringValue(hkRoot,sKeyPath,sValueName,Data)
Case REG_MULTI_SZ
ReadValue = objRegistry.GetMultiStringValue(hkRoot,sKeyPath,sValueName,Data)
Case REG_EXPAND_SZ
ReadValue = objRegistry.GetExpandedStringValue(hkRoot,sKeyPath,sValueName,Data)
Case REG_BINARY
ReadValue = objRegistry.GetBinaryValue(hkRoot,sKeyPath,sValueName,Data)
Case REG_DWORD
ReadValue = objRegistry.GetDWORDValue(hkRoot,sKeyPath,sValueName,Data)
End Select
End If
End Function

' Used to write registry values, returns 0 for success, all else is falure
'
' The constants can be used for the hkRoot value:
' HKEY_LOCAL_MACHINE
' HKEY_CURRENT_USER
' HKEY_CLASSES_ROOT
' HKEY_USERS
' HKEY_CURRENT_CONFIG
' HKEY_DYN_DATA
' The constants can be used for the nType value:
' REG_SZ
' REG_MULTI_SZ
' REG_EXPAND_SZ
' REG_BINARY
' REG_DWORD
Function WriteValue( ByVal hkRoot , ByVal nType , ByVal sKeyPath, ByVal sValueName , ByVal Data)
On Error Resume Next
WriteValue = -1 'Default error
If hkRoot = HKEY_LOCAL_MACHINE Or hkRoot = HKEY_CURRENT_USER Or hkRoot = HKEY_CLASSES_ROOT Or hkRoot = HKEY_USERS Or hkRoot = HKEY_CURRENT_CONFIG Or hkRoot = HKEY_DYN_DATA Then
Call objRegistry.CreateKey( hkRoot , sKeyPath ) 'Create the key if not existing...
'Read Value
Select Case nType
Case REG_SZ
WriteValue = objRegistry.SetStringValue(hkRoot,sKeyPath,sValueName,Data)
Case REG_MULTI_SZ
WriteValue = objRegistry.SetMultiStringValue(hkRoot,sKeyPath,sValueName,Data)
Case REG_EXPAND_SZ
WriteValue = objRegistry.SetExpandedStringValue(hkRoot,sKeyPath,sValueName,Data)
Case REG_BINARY
WriteValue = objRegistry.SetBinaryValue(hkRoot,sKeyPath,sValueName,Data)
Case REG_DWORD
WriteValue = objRegistry.SetDWORDValue(hkRoot,sKeyPath,sValueName,Data)
End Select
End If
End Function

Function DeleteValue( ByVal hkRoot , ByVal sKeyPath , ByVal sValueName )
On Error Resume Next
DeleteValue = -1 'Default error
If hkRoot = HKEY_LOCAL_MACHINE Or hkRoot = HKEY_CURRENT_USER Or hkRoot = HKEY_CLASSES_ROOT Or hkRoot = HKEY_USERS Or hkRoot = HKEY_CURRENT_CONFIG Or hkRoot = HKEY_DYN_DATA Then
DeleteValue = objRegistry.DeleteValue( hkRoot , sKeyPath , sValueName )
End If
End Function

Public Function DeleteKey( hkRoot , ByVal sKeyPath )
DeleteKey = -1
On Error Resume Next
If hkRoot = HKEY_LOCAL_MACHINE Or hkRoot = HKEY_CURRENT_USER Or hkRoot = HKEY_CLASSES_ROOT Or hkRoot = HKEY_USERS Or hkRoot = HKEY_CURRENT_CONFIG Or hkRoot = HKEY_DYN_DATA Then
Dim arrSubKeys
Dim sSubKey
Call objRegistry.EnumKey( hkRoot, sKeyPath, arrSubkeys )
If IsArray(arrSubkeys) Then
For Each sSubKey In arrSubkeys
Call DeleteKey( hkRoot, sKeyPath & "\" & sSubKey , bForce)
Next
End If
DeleteKey = objRegistry.DeleteKey( hkRoot, sKeyPath )
End If
End Function

' Members Variables
Private objRegistry
End Class
Dim str
Dim r : Set r = New std_registry
If r.ConnectProvider32( "." ) Then

If r.ReadValue( HKEY_LOCAL_MACHINE , REG_EXPAND_SZ , "SYSTEM\CurrentControlSet\Control\Session Manager\Environment" , "ComSpec" , str )=0 Then

Wsh.echo str
Else
Wsh.echo str
End If

End If

(0)

相关推荐

  • vbscript Registry 注册表操作实现代码(读写删除)

    VBScript Code: 复制代码 代码如下: ' Create a WSH Shell object: Set wshShell = CreateObject( "WScript.Shell" ) ' ' Create a new key: wshShell.RegWrite "HKCU\TestKey\", "" ' Create a new DWORD value: wshShell.RegWrite "HKCU\TestKe

  • VBS通过WMI监视注册表变动的代码

    Google一下"VBS监视注册表",TOP 5都是一模一样的代码,我查了一下,出处是Hey, Scripting Guy! Blog上一篇名为<How Can I Monitor Changes to a Registry Key?>的文章,真是厚颜无耻. 文章我没时间翻译了,贴一下代码: 复制代码 代码如下: strComputer = "." Set objWMIService = GetObject("winmgmts:\\"

  • vbs删除注册表项的代码

    WScript.Echo "Enabling Kerberos Logging..." const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_  strComputer & "\root\default:StdRegPro

  • vbs 注册表操作代码(添加删除)

    1.读注册表的关键词和值: 可以通过把关键词的完整路径传递给wshshell对象的regread方法.例如: 复制代码 代码如下: set ws=wscript.createobject("wscript.shell") v=ws.regread("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\nwiz") wscript.echo v 2.写注册表 使用wshshell对象的reg

  • 用vbs操作注册表实例代码

    打开或关闭CMD: Dim WSHShell, r, m, v, t, g Dim i On Error Resume Next Set WSHShell=WScript.CreateObject("WScript.Shell") v="HKEY_CURRENT_USER\Software\Policies\Microsoft\Windows\system\DisableCMD" i="REG_DWORD" t="命令提示窗口开关&qu

  • vbscript 注册表脚本书写

    WScript.Echo "Enabling Kerberos Logging..." const HKEY_LOCAL_MACHINE = &H80000002 strComputer = "." Set StdOut = WScript.StdOut Set oReg=GetObject("winmgmts:{impersonationLevel=impersonate}!\\" &_  strComputer & &

  • VBS脚本使用WMI操作注册表的代码第1/2页

    oReg.CreateKey HKEY_LOCAL_MACHINE,strKeyPath oReg.SetExpandedStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue    oReg.SetStringValue HKEY_LOCAL_MACHINE,strKeyPath,strValueName,strValue    oReg.SetDWORDValue HKEY_LOCAL_MACHINE,strKeyPat

  • Vbscript写注册表的方法

    分类:程序 早些年用过DOS系统的用户都知道,MS-DOS操作系统允许普通用户编写批处理文件来实现简单的编程.它有效地简化了我们的工作,带给我们许多方便.当时甚至出现了一些专门编写批处理文件的程序员呢. 事实上,操作系统除了提供易于操作的使用界面外,还应当有一套内建的Script(脚本)语言才算完整.从某种角度来说,批处理文件可以说就是MS-DOS下的脚本语言.到了Windows时代,虽然Windows系统仍然保留了批处理,但是批处理在Windows中就显得功能过于简单,无法满足用户的需要了--

  • VBS读取注册表的两种方法

    第一种 通过wshshell对象的regread 复制代码 代码如下: RegValue = CreateObject("Wscript.Shell").RegRead("\XXXX_XXXXXXXX_XXX\XXX\XXXX")Msgbox(RegValue) 更多的操作可以参考这篇文章 http://www.jb51.net/article/18125.htm 第二种方法: 通过wmi 复制代码 代码如下: Const HKLM = &H80000002

  • vbs 注册表操作类代码

    复制代码 代码如下: Option Explicit Const WBEM_MAX_WAIT = &H80 ' Registry Hives Const HKEY_LOCAL_MACHINE = &H80000002 Const HKEY_CURRENT_USER = &H80000001 Const HKEY_CLASSES_ROOT = &H80000000 Const HKEY_USERS = &H80000003 Const HKEY_CURRENT_CON

  • c#注册表操作类分享

    复制代码 代码如下: /// <summary>/// 注册表基项静态域/// /// 主要包括:/// 1.Registry.ClassesRoot 对应于HKEY_CLASSES_ROOT主键/// 2.Registry.CurrentUser 对应于HKEY_CURRENT_USER主键/// 3.Registry.LocalMachine 对应于 HKEY_LOCAL_MACHINE主键/// 4.Registry.User 对应于 HKEY_USER主键/// 5.Registry.

  • C# 注册表 操作实现代码

    其中第二级目录包含了五个预定义主键分别是:HKEY_CLASSES_ROOT,HKEY_CURRENT_USER,HKEY_LOCAL_MACHINE,HKEY_USERS,HKEY_CURRENT_CONFIG. 下面我们来分别解释这5个类的作用 HKEY_CLASSES_ROOT该主键包含了文件的扩展名和应用程序的关联信息以及Window Shell和OLE用于储存注册表的信息.该主键下的子键决定了在WINDOWS中如何显示该类文件以及他们的图标,该主键是从HKEY_LCCAL_MACHIN

  • hibernate多表操作实例代码

    多表操作之多对多关系简介 思路就是: 在数据库底层通过添加中间表来指定关联关系. 在双方的实体中添加一个保存对方的集合 在双方的配置文件中使用set标签和many-to-many标签来进行关联关系的配置.即可完成! 调用Hibernate的相关的API,操作就行了. 需要注意的地方 首先是数据库中表的创建 这里有一个小例子: 多对多的核心表,第三方表.table: create table thrid( one_id int not null, two_id int not null, cons

  • python读取Windows注册表的示例代码

    运行结果 代码 import winreg def read_reg(): location = r"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\Shell Folders" # 获取注册表该位置的所有键值 key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, location) print("\n" + "-"*100 + "\

  • Win7下VHD文件右键增强实现代码(vbs+注册表)

    1.保存以下代码到:c:\windows\system32\vdm.vbs 复制代码 代码如下: Dim ArgsSet Args = WScript.ArgumentsTranArgs = " "For i = 0 To Args.Count - 1 TranArgs = TranArgs & """" & Args(i) & """" & " " Ne

  • 完整的注册表操作实例 VBS脚本

    ①创建主键.创建各类型的键值. ②读取键值并分析键值类型. ③枚举主键及键值. ④判断键或键值是否存在. ⑤查询注册表键的操作权限. ⑥监视注册表根键.主键.键值,当发现变动时提示. 复制代码 代码如下: '''注册表查询/操作 On Error Resume Next Const HKEY_CLASSES_ROOT = &H80000000'''设置注册表5大根键,HKCR-----------① Const HKEY_CURRENT_USER = &H80000001'''HKCU C

随机推荐