国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 編程 > VBScript > 正文

WMI StdRegProv 通過(guò)wmi操作注冊(cè)表的vbscript實(shí)現(xiàn)代碼 (本地或遠(yuǎn)程)

2020-06-26 18:29:12
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
WMI StdRegProv 通過(guò)wmi操作注冊(cè)表的vbscript實(shí)現(xiàn)代碼 (本地或遠(yuǎn)程),需要的朋友可以參考下。
 
Because of its length, only the code for the function itself is shown on this page. 
The demo script that shows how to use this function is available as a separate download. 
復(fù)制代碼代碼如下:

Function ReadRegValue( myComputer, myRegPath, myRegValue ) 
' This function reads a value from the registry of any WMI 
' enabled computer. 

' Arguments: 
' myComputer a computer name or IP address, 
' or a dot for the local computer 
' myRegPath a full registry key path, e.g. 
' HKEY_CLASSES_ROOT/.jpg or 
' HKLM/SOFTWARE/Microsoft/DirectX 
' myRegValue the value name to be queried, e.g. 
' InstalledVersion or "" for default 
' values 

' The function returns an array with the following elements: 
' ReadRegValue(0) the computer name (the first argument) 
' ReadRegValue(1) the hive number (see const declarations) 
' ReadRegValue(2) the key path without the hive 
' ReadRegValue(3) the value name (the third argument) 
' ReadRegValue(4) the error number: 0 means no error 
' ReadRegValue(5) the data type of the result 
' ReadRegValue(6) the actual data, or the first element of an 
' array of data for REG_BINARY or REG_MULTI_SZ 

' Written by Rob van der Woude 
' http://www.robvanderwoude.com 


' Standard housekeeping 
Const HKEY_CLASSES_ROOT = &H80000000 
Const HKEY_CURRENT_USER = &H80000001 
Const HKEY_LOCAL_MACHINE = &H80000002 
Const HKEY_USERS = &H80000003 
Const HKEY_CURRENT_CONFIG = &H80000005 
Const HKEY_DYN_DATA = &H80000006 ' Windows 95/98 only 

Const REG_SZ = 1 
Const REG_EXPAND_SZ = 2 
Const REG_BINARY = 3 
Const REG_DWORD = 4 
Const REG_DWORD_BIG_ENDIAN = 5 
Const REG_LINK = 6 
Const REG_MULTI_SZ = 7 
Const REG_RESOURCE_LIST = 8 
Const REG_FULL_RESOURCE_DESCRIPTOR = 9 
Const REG_RESOURCE_REQUIREMENTS_LIST = 10 
Const REG_QWORD = 11 

Dim arrRegPath, arrResult(), arrValueNames, arrValueTypes 
Dim i, objReg, strHive, valRegError, valRegType, valRegVal 

' Assume no error, for now 
valRegError = 0 

' Split the registry path in a hive part 
' and the rest, and check if that succeeded 
arrRegPath = Split( myRegPath, "/", 2 ) 
If IsArray( arrRegPath ) Then 
If UBound( arrRegPath ) <> 1 Then valRegError = 5 
Else 
valRegError = 5 
End If 

' Convert the hive string to a hive number 
Select Case UCase( arrRegPath( 0 ) ) 
Case "HKCR", "HKEY_CLASSES_ROOT" 
strHive = HKEY_CLASSES_ROOT 
Case "HKCU", "HKEY_CURRENT_USER" 
strHive = HKEY_CURRENT_USER 
Case "HKLM", "HKEY_LOCAL_MACHINE" 
strHive = HKEY_LOCAL_MACHINE 
Case "HKU", "HKEY_USERS" 
strHive = HKEY_USERS 
Case "HKCC", "HKEY_CURRENT_CONFIG" 
strHive = HKEY_CURRENT_CONFIG 
Case "HKDD", "HKEY_DYN_DATA" 
strHive = HKEY_DYN_DATA 
Case Else 
valRegError = 5 
End Select 

' Abort if any error occurred, and return an error code 
If valRegError > 0 Then 
ReadRegValue = Array( myComputer, myRegPath, _ 
myRegPath, myRegValue, _ 
valRegError, "-", "-" ) 
Exit Function 
End If 

' Initiate custom error handling 
On Error Resume Next 

' Create a WMI registry object 
Set objReg = GetObject( "winmgmts:{impersonationLevel=impersonate}!//" _ 
& myComputer & "/root/default:StdRegProv" ) 

' Abort on failure to create the object 
If Err Then 
valRegError = Err.Number 
Err.Clear 
On Error Goto 0 
ReadRegValue = Array( myComputer, myRegPath, _ 
myRegPath, myRegValue, _ 
valRegError, "-", "-" ) 
Exit Function 
End If 

' Get a list of all values in the registry path; 
' we need to do this in order to find out the 
' exact data type for the requested value 
objReg.EnumValues strHive, arrRegPath( 1 ), arrValueNames, arrValueTypes 

' If no values were found, we'll need to retrieve a default value 
If Not IsArray( arrValueNames ) Then 
arrValueNames = Array( "" ) 
arrValueTypes = Array( REG_SZ ) 
End If 

If Err Then 
' Abort on failure, returning an error code 
valRegError = Err.Number 
Err.Clear 
On Error Goto 0 
ReadRegValue = Array( myComputer, myRegPath, _ 
myRegPath, myRegValue, _ 
valRegError, "-", "-" ) 
Exit Function 
Else 
' Loop through all values in the list . . . 
For i = 0 To UBound( arrValueNames ) 
' . . . and find the one requested 
If UCase( arrValueNames( i ) ) = UCase( myRegValue ) Then 
' Read the requested value's data type 
valRegType = arrValueTypes( i ) 
' Based on the data type, use the appropriate query to retrieve the data 
Select Case valRegType 
Case REG_SZ 
objReg.GetStringValue strHive, arrRegPath( 1 ), _ 
myRegValue, valRegVal 
If Err Then valRegError = Err.Number 
Case REG_EXPAND_SZ 
objReg.GetExpandedStringValue strHive, arrRegPath( 1 ), _ 
myRegValue, valRegVal 
If Err Then valRegError = Err.Number 
Case REG_BINARY ' returns an array of bytes 
objReg.GetBinaryValue strHive, arrRegPath( 1 ), _ 
myRegValue, valRegVal 
If Err Then valRegError = Err.Number 
Case REG_DWORD 
objReg.GetDWORDValue strHive, arrRegPath( 1 ), _ 
myRegValue, valRegVal 
If Err Then valRegError = Err.Number 
Case REG_MULTI_SZ ' returns an array of strings 
objReg.GetMultiStringValue strHive, arrRegPath( 1 ), _ 
myRegValue, valRegVal 
If Err Then valRegError = Err.Number 
Case REG_QWORD 
objReg.GetQWORDValue strHive, arrRegPath( 1 ), _ 
myRegValue, valRegVal 
If Err Then valRegError = Err.Number 
Case Else 
valRegError = 5 
End Select 
End If 
Next 
End If 

' Check if an error occurred 
If valRegError > 0 Then 
valRegType = "" 
valRegVal = "" 
Err.Clear 
On Error Goto 0 
End If 

' Return the data in an array 
If valRegType = REG_BINARY Or valRegType = REG_MULTI_SZ Then 
' First, deal with registry data which is 
' returned as array instead of single value 
ReDim Preserve arrResult( 6 + UBound( valRegVal ) ) 
arrResult( 0 ) = myComputer 
arrResult( 1 ) = strHive 
arrResult( 2 ) = arrRegPath( 1 ) 
arrResult( 3 ) = myRegValue 
arrResult( 4 ) = valRegError 
arrResult( 5 ) = valRegType 
For i = 0 To UBound( valRegVal ) 
arrResult( 6 + i ) = valRegVal( i ) 
Next 
ReadRegValue = arrResult 
Else 
ReadRegValue = Array( myComputer, strHive, arrRegPath( 1 ), _ 
myRegValue, valRegError, valRegType, valRegVal ) 
End If 

' Finished 
Set objReg = Nothing 
On Error Goto 0 
End Function 

Requirements: 
Windows version: ME, 2000, XP, Server 2003, or Vista (95, 98, NT 4 with WMI CORE 1.5) 
Network: any 
Client software: WMI CORE 1.5 for Windows 95, 98 or NT 4 
Script Engine: any 
Summarized: Can work on any Windows computer, but WMI CORE 1.5 is required for Windows 95, 98 or NT 4. 
Can be used in *.vbs with CSCRIPT.EXE or WSCRIPT.EXE, as well as in HTAs.

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 称多县| 伊宁县| 滁州市| 叙永县| 江阴市| 景宁| 司法| 尼木县| 霍邱县| 原阳县| 潼南县| 杨浦区| 金阳县| 东城区| 大理市| 瓦房店市| 常山县| 辉南县| 墨竹工卡县| 浠水县| 巩义市| 庆安县| 日喀则市| 泗阳县| 贵州省| 墨玉县| 大竹县| 莎车县| 堆龙德庆县| 大城县| 遂川县| 莆田市| 科技| 习水县| 拜泉县| 河西区| 微山县| 肃南| 白山市| 瑞安市| 平陆县|