ms-access - environ ("username") 与 advapi32.dll

标签 ms-access vba ms-access-2003

我知道至少有两种方法可以在 Access 应用程序中检索用户名。

你可以使用environ函数:

environ("username")

您可以在 advapi32.dll 中使用 GetUsername

Public Declare Function GetUserName& Lib "advapi32.dll" Alias _
"GetUserNameA" (ByVal lpBuffer As String, nSize As Long)

s = String(l, Chr(32))
GetUserName s, l
username = Left$(s, l - 1)

以上哪种方法最安全?为什么?

也许是一些背景信息,这些应用程序在本地计算机和远程桌面上都使用。

最佳答案

正如 Simon 所说,Environ 变量是可以操作的,但是有些人也喜欢避免 api 调用,如果是这种情况,那么这是一个简单的替代方案:

Public Function GetUser() As String

    Dim WNet As Object

    Set WNet = CreateObject("WScript.Network")

    GetUser = WNet.UserName

    Set WNet = Nothing

End Function

关于ms-access - environ ("username") 与 advapi32.dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8987561/

相关文章:

ms-access - DoCmd.TransferSpreadsheet 问题

sql - 基于不同表的表和表单 - 查看表中是否存在公共(public)记录并在表单中插入 "yes"或 "no"值

vba - VBA中的子级

regex - 从字符串中提取最大的数字序列(正则表达式,还是?)

excel - VBA - 用户定义的变量工作表名称

ms-access - 微软 Access 2003 : Can data disappear from records and how do I test for this and prevent it?

vba - 接收错误 3075 : syntax error for combo box linked to text box

ms-access - 对于某些操作值, Access SysCmd 功能无法按预期工作

sql - MS Access 2003 中 IN 子句中的元组

ms-access - 如何在 vba 中使用字符串创建日期?