Basic家族vb6miniVBSwpsHome.cn作者成长之路轻.增值

(VBS日记.A016)~VBS对象之ADOX-ADOX.Group 对象

ADOX 是 ActiveX Data Objects Extensions for Data Definition Language and Security,它是ADO的一个扩展,专门用于数据定义语言(DDL)和安全性。ADOX 提供了一组对象,允许用户通过编程方式创建、修改或删除数据库对象,如表、视图、用户、组等。在ADOX中,ADOX.Group 对象代表数据库中的一个组。这个对象主要用于在数据库安全性上下文中定义和管理组。在使用ADOX时,确保你已经安装了相应的数据提供者,并且具有对数据库进行操作的权限。ADOX通常用于更高级的数据库管理和安全性任务。

CreateObject(“ADOX.Group”)
ADOX.Group对象用于访问数据库的用户组
可以从Groups对象集合中提取或枚举Group对象
ADOX.Group对象有3个属性4个方法0个事件

(一)属性:
Name 用户组的名称。类型:String
Properties 用户组的属性(只读)。类型:Properties对象
Users 用户组中的所有用户(只读)。类型:Users对象

(二)方法:
GetPermissions 查询权限。
SetPermissions 设置权限示例。
Append:向数据库添加新的组。
Delete:删除数据库中的一个组。

(三)示例一:
‘在VBS中使用ADOX.Group对象来添加和删除数据库组:
Dim cat
Set cat = CreateObject(“ADOX.Catalog”)

‘ 设置数据库的连接字符串
cat.ActiveConnection = “Provider=…;Data Source=…;User ID=…;Password=…”

‘ 创建一个新的组
Dim grp
Set grp = CreateObject(“ADOX.Group”)
grp.Name = “NewGroup”

‘ 将新组添加到数据库
On Error Resume Next ‘ 忽略错误
cat.Groups.Append grp
If Err.Number <> 0 Then
WScript.Echo “Error adding group: ” & Err.Description
Err.Clear
Exit Sub
End If
On Error GoTo 0 ‘ 重置错误处理

WScript.Echo “Group ‘” & grp.Name & “‘ added successfully.”

‘ 删除组
cat.Groups.Delete “NewGroup”

‘ 清理
Set grp = Nothing
Set cat = Nothing

(四)示例二:
‘示例:Group对象,Access数据库
Option Explicit
Dim oFSO, oWshShell, oConnection, oCatalog, oGroup, oUser, s

Const FILE = “D:\1\1.mdb” ‘数据库文件,要求目标文件夹已存在

Call RunAs32() ‘使vbs运行在32位应用程序模式
Set oWshShell = CreateObject(“WScript.Shell”)
s = “20240612” ‘数据库密码

‘连接字符串。Access要访问用户组、用户和权限,需要指定System.mdw文件
s = “Provider=Microsoft.Jet.OLEDB.4.0;Data Source=” & FILE & _
“;Jet OLEDB:Database Password=” & s & “;Jet OLEDB:System database=” & _
oWshShell.ExpandEnvironmentStrings(“%APPDATA%\Microsoft\Access\System.mdw”)

‘删除数据库文件并新建,防止已有数据库文件导致示例出错
Set oFSO = CreateObject(“Scripting.FileSystemObject”)
If oFSO.FileExists(FILE) Then oFSO.DeleteFile FILE, True
CreateObject(“ADOX.Catalog”).Create s

‘新建的Access数据库有2个用户组 Admins Users
‘新建的Access数据库有3个用户名 admin Creator Engine

Set oConnection = CreateObject(“ADODB.Connection”)
oConnection.Open s

Set oCatalog = CreateObject(“ADOX.Catalog”)
Set oCatalog.ActiveConnection = oConnection

oCatalog.Groups.Append “group1” ‘添加用户组,方式一

Set oGroup = CreateObject(“ADOX.Group”)
oGroup.Name = “group2”
oCatalog.Groups.Append oGroup ‘添加用户组,方式二

s = “用户组” & oCatalog.Groups.Count & “个,用户” & oCatalog.Users.Count & “个” & vbLf & vbLf & _
“用户” & vbTab & ” →” & vbTab & “所属用户组” & vbLf
For Each oUser In oCatalog.Users
s = s & oUser.Name & vbTab & vbTab
For Each oGroup In oUser.Groups
s = s & oGroup.Name & vbTab
Next
s = Left(s, Len(s) – 1) & vbLf
Next
s = s & vbLf & “用户组” & vbTab & ” →” & vbTab & “用户列表” & vbLf
For Each oGroup In oCatalog.Groups
s = s & oGroup.Name & vbTab & vbTab
For Each oUser In oGroup.Users
s = s & oUser.Name & vbTab
Next
s = Left(s, Len(s) – 1) & vbLf
Next
MsgBox Left(s, Len(s) – 1)

‘删除用户组
oConnection.Execute “DROP GROUP group1”
oConnection.Execute “DROP GROUP group2”

oConnection.Close()
MsgBox “ok”, vbSystemModal

Sub RunAs32()
Dim oWshShell, oFSO, s, i
Set oWshShell = CreateObject(“WScript.Shell”)
Set oFSO = CreateObject(“Scripting.FileSystemObject”)
s = oWshShell.ExpandEnvironmentStrings(“%windir%\SysWOW64\WScript.exe”)
If oFSO.FileExists(s) And LCase(WScript.FullName) <> LCase(s) Then
s = s & ” “”” & WScript.ScriptFullName & “”” “
For Each i In WScript.Arguments
If InStr(i, ” “) > 0 Then i = “””” & i & “”””
s = s & i & ” “
Next
oWshShell.Run Left(s, Len(s) – 1)
WScript.Quit()
End If
End Sub

Views: 56

Hi, I’m vbsgirl

办公职员