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

(VBS日记.A020)~VBS对象之ADOX-ADOX.User对象

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

ADOX是一个功能强大的工具,适用于需要通过编程方式进行数据库架构和安全操作的开发者。在使用ADOX时注意的一些关键点:

(1)提供者支持:用ADOX之前,需要确保数据库提供者支持ADOX对象。不同的数据库(如Microsoft Access、SQL Server等)支持不同级别的ADOX功能。
(2)编程接口:ADOX提供了丰富的对象模型,包括但不限于Catalog、Table、Column、Index、User 和 Group 等。
(3)安全性:ADOX允许开发者通过编程方式管理数据库的安全性,例如添加或删除用户和组,以及设置权限。
(4)事务处理:ADOX操作可以包含在事务中,这意味着你可以将多个操作作为一个单元执行,以确保数据库的完整性。
(5)错误处理:在使用ADOX进行数据库操作时,应该实现适当的错误处理逻辑,以便在操作失败时进行恢复或回滚。
(6)ADOX与ADO:ADOX对象通常与ADO对象一起使用,ADO用于数据访问和操作,而ADOX用于结构和安全相关的任务。
(7)安装和配置:在使用ADOX之前,确保系统中已安装了适当的ADO和ADOX库,并且配置了正确的注册表项。

【VBS对象之ADOX-ADOX.User对象】

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

(一)属性:
Name 用户的名称。类型:String
ParentCatalog 用户对象所属的Catalog对象。类型:Catalog对象
Properties 用户的属性(只读)。类型:Properties对象
Groups 用户所在的用户组(只读)。类型:Groups对象

(二)方法:
ChangePassword 更改用户密码
GetPermissions 查询权限
SetPermissions 设置权限

(三)示例:
‘示例:User对象,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 = “20240617” ‘数据库密码

‘连接字符串。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.Users.Append “user1”, “Password” ‘添加用户,方式一

Set oUser = CreateObject(“ADOX.User”)
oUser.Name = “user2”
oUser.ChangePassword “”, “NewPassword” ‘添加用户,方式二
oCatalog.Users.Append oUser

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 USER user1”
oConnection.Execute “DROP USER user2”

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: 61

Hi, I’m vbsgirl

办公职员