4
A
回答
8
阿兰发现this online
Function IsMember(strDomain As String, strGroup _
As String, strMember As String) As Boolean
Dim grp As Object
Dim strPath As String
strPath = "WinNT://" & strDomain & "/"
Set grp = GetObject(strPath & strGroup & ",group")
IsMember = grp.IsMember(strPath & strMember)
End Function
你可以通过USERDOMAIN
和USERNAME
环境的方式获得的Windows帐户信息瓦尔:
Function GetCurrentUser() As String
GetCurrentUser = Environ("USERNAME")
End Function
Function GetCurrentDomain() As String
GetCurrentDomain = Environ("USERDOMAIN")
End Function
全部放在一起:
If IsMember(GetCurrentDomain, "AD Group", GetCurrentUser) Then
DoStuff()
End If
2
Function IsMember(strDomain As String, strGroup _
As String, strMember As String) As Boolean
Dim grp As Object
Dim strPath As String
strPath = "WinNT://" & strDomain & "/"
Set grp = GetObject(strPath & strGroup & ",group")
IsMember = grp.IsMember(strPath & strMember)
End Function
现在,我只需要当前用户的帐户名。太糟糕了Application.CurrentUser
不给我他们的域帐户名。
7
我迟到了,但是你需要的代码如下。它会为您获取用户名和域名。
请注意,我没有使用objGroup.Ismember - 这实际上是正确的使用方法 - 我列举了用户所在的组列表,因为它更容易调试,并且没有可观的性能损失。
......我抬起从早期的一个项目,在我需要检查了“阅读的报告”团,“编辑数据”组成员的代码,以及“编辑系统数据”组,使我可以选择启用哪些控件以及哪些表单以只读方式打开。枚举组一次比三次单独检查快。
Public Function UserIsInGroup(GroupName As String, _
Optional Username As String, _
Optional Domain As String) As Boolean
'On Error Resume Next
' Returns TRUE if the user is in the named NT Group.
' If user name is omitted, current logged-in user's login name is assumed.
' If domain is omitted, current logged-in user's domain is assumed.
' User name can be submitted in the form 'myDomain/MyName'
' (this will run slightly faster)
' Does not raise errors for unknown user.
'
' Sample Usage: UserIsInGroup("Domain Users")
Dim strUsername As String
Dim objGroup As Object
Dim objUser As Object
Dim objNetwork As Object
UserIsInGroup = False
If Username = "" Then
Set objNetwork = CreateObject("WScript.Network")
strUsername = objNetwork.UserDomain & "/" & objNetwork.Username
Else
strUsername = Username
End If
strUsername = Replace(strUsername, "\", "/")
If InStr(strUsername, "/") Then
' No action: Domain has already been supplied in the user name
Else
If Domain = "" Then
Set objNetwork = CreateObject("WScript.Network")
Domain = objNetwork.UserDomain
End If
strUsername = Domain & "/" & strUsername
End If
Set objUser = GetObject("WinNT://" & strUsername & ",user")
If objUser Is Nothing Then
' Insert error-handler here if you want to report an unknown user name
Else
For Each objGroup In objUser.Groups
'Debug.Print objGroup.Name
If GroupName = objGroup.Name Then
UserIsInGroup = True
Exit For
End If
Next objGroup
End If
Set objNetwork = Nothing
Set objGroup = Nothing
Set objUser = Nothing
End Function
希望这迟交是使用于其他开发商的:当我在2003年看这件事的第一次,回来了,就好像从来没有人使用AD组Excel或MS-Access。
相关问题
- 1. 检查用户组成员身份
- 2. Powershell,如何检查AD用户的组成员身份
- 3. 从Active Directory获取用户的组成员身份
- 4. 确定跨域Active Directory组成员身份
- 5. 根据组成员身份禁用TFS 2012添加成员
- 6. Powershell ALL AD用户及其组成员身份
- 7. 在PHP中使用ASP.NET成员身份
- 8. 在WCF中使用Asp.Net成员身份
- 9. 尝试使用ASP.NET成员身份
- 10. 使用Umbraco成员身份登录用户时出错
- 11. 获取MVC3使用Oracle用户角色和成员身份
- 12. 通过给定用户名和域名的脚本查找组成员身份
- 13. 身份验证授权ASP/NET MVC 3使用成员身份
- 14. 使用PowerShell获取AD组成员身份
- 15. 使用图形API从Azure AD缓存组成员身份
- 16. SPuser查找组成员身份
- 17. 根据用户角色/用户公开组成员身份重定向自定义按钮URL
- 18. 项目管理员组的TFS默认组成员身份
- 19. 确定有效的MSSQL数据库角色成员身份
- 20. 以guid为用户名的成员身份登录asp.net
- 21. 检查其他用户的角色成员身份(IsInRole,WindowsIdentity/Principal)
- 22. ASP.NET成员身份防止用户同时以不同的计算机上的相同用户身份登录
- 23. ASP.NET会员以用户身份登录
- 24. 使用拖放确定身份?
- 25. 以用户身份进行管理员身份验证
- 26. 在工作项查询中解析AssignedTo中的用户组成员身份
- 27. 是否可以读取Microsoft Graph API中的用户组成员身份?
- 28. LDAP过滤器只允许拥有组成员身份的用户
- 29. 使用备用密码的asp.net成员身份登录
- 30. 确定DB2中的身份生成
真。这主要是为了向不同的用户显示不同的屏幕。没有那么多的可用性安全。 – 2009-01-06 15:54:35