Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access MS Access是否有办法获取当前Active Directory用户?_Ms Access_Active Directory - Fatal编程技术网

Ms access MS Access是否有办法获取当前Active Directory用户?

Ms access MS Access是否有办法获取当前Active Directory用户?,ms-access,active-directory,Ms Access,Active Directory,我正在为我的公司开发一款软件的规范,作为审计系统的一部分,我认为如果有办法抓取当前的Active Directory用户,这将是一件好事 希望是这样的: Dim strUser as String strUser = ActiveDirectory.User() MsgBox "Welcome back, " & strUser -我有一些代码在工作中,如果这不 相关报价: 私有声明函数GetUserName Lib“advapi32.dll”别名“GetUserNameA”_ (By

我正在为我的公司开发一款软件的规范,作为审计系统的一部分,我认为如果有办法抓取当前的Active Directory用户,这将是一件好事

希望是这样的:

Dim strUser as String
strUser = ActiveDirectory.User()
MsgBox "Welcome back, " & strUser
-我有一些代码在工作中,如果这不

相关报价:

私有声明函数GetUserName Lib“advapi32.dll”别名“GetUserNameA”_
(ByVal IpBuffer作为字符串,nSize作为长)作为长
私有声明函数GetComputerName Lib“kernel32”别名“GetComputerNameA”_
(ByVal lpBuffer作为字符串,nSize作为长)作为长
函数ThisUserName()作为字符串
模糊的,模糊的
像弦一样的暗弦
strUser=String$(15,“”)
LngBufLen=15
如果GetUserName(strUser,LngBufLen)=1,则
ThisUserName=左(strUser,LngBufLen-1)
其他的
ThisUserName=“未知”
如果结束
端函数
函数ThisComputerID()作为字符串
模糊的,模糊的
像弦一样的暗弦
strUser=String$(15,“”)
LngBufLen=15
如果GetComputerName(strUser,LngBufLen)=1,则
ThisComputerID=左(strUser,LngBufLen)
其他的
此计算机ID=0
如果结束
端函数

依靠环境变量保持有效是一个坏主意,因为它们可以在用户会话中轻松更改。

David就使用环境变量的风险提出了一个非常好的观点。我只能补充一点,环境变量可能还有其他问题。请看我们5年前项目中的实际代码片段:

公共函数CurrentWorkbenchUser()作为字符串
'2004-01-05,YM:使用Application.CurrentUser识别
“当前用户的问题非常严重(更具体地说,非常严重
'为所有用户设置和管理起来很麻烦)。
因此,作为一个快速解决方案,让我们使用操作系统级用户的
'标识(注意:下面使用的环境变量必须正常工作
'在Windows NT/2000/2003上,但在Windows 98/ME上可能不起作用)
'CurrentWorkbenchUser=Application.CurrentUser
'
'2005-06-13,YM:环境变量在Windows 2003中不起作用。
'改用Windows脚本主机(WSH)网络对象。
'CurrentWorkbenchUser=Environ(“用户域”)和“\”&Environ(“用户名”)
'
’2007-01-23,YM:2007-01-09和2007-01-20之间的某个地方,
'WshNetwork对象在CONTROLLER3上停止工作。
我们找不到任何简单的方法来解决这个问题。
同时,环境变量
'在Windows 2003上工作。
(显然,这是2005年出现的一些奇怪的配置问题:
他说,当时我们只有一台Windows2003电脑,而且是
威尔的工作站)。
'
无论如何,在撰写本文时,
'返回到环境变量
'似乎是控制器3上问题的最简单解决方案。
“将wshn作为新的wshn网络
'CurrentWorkbenchUser=wshn.UserDomain&“\”&wshn.UserName
CurrentWorkbenchUser=Environ(“用户域”)和“\”&Environ(“用户名”)
端函数

这是我的版本:它可以获取您喜欢的任何内容:

”获取名字、姓氏、全名或用户名
公共函数GetUser(可选whatpart=“username”)
将此设置为字符串
如果whatpart=“username”,那么GetUser=Environ(“username”):退出函数
Set objSysInfo=CreateObject(“ADSystemInfo”)
设置objUser=GetObject(“LDAP://”&objSysInfo.USERNAME)
选择案例whatpart
案例“fullname”:returnthis=objUser.fullname
案例“firstname”,“givenname”:returnthis=objUser.givenname
案例“lastname”:returnthis=objUser.lastname
Case Else:returnthis=Environ(“用户名”)
结束选择
GetUser=returnthis
端函数

.

如果您实际使用的是Jet用户级安全性,则CurrentUser()没有问题。另一方面,如果你不需要Jet ULS,那么Windows登录是一个很好的选择(尽管你可能仍然需要在你的应用程序中维护某种组成员资格表)。我很想否决你的链接唯一答案,但是,嗯,让我们引用幸运的是没有坏掉的链接;)一切都好。经过深思熟虑,这是一个相当糟糕的回答。在我的辩护中,早期的don't just链接答案并不像今天那么死板;)无论如何,谢谢你的编辑。