environ("username") 与 advapi32.dll

Posted

技术标签:

【中文标题】environ("username") 与 advapi32.dll【英文标题】:environ("username") versus advapi32.dll 【发布时间】:2012-01-24 13:25:02 【问题描述】:

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

你可以使用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)

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

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

【问题讨论】:

【参考方案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

【讨论】:

+1 除了我会跳过 Set Nothing 语句,因为 WNet 在超出范围时将被销毁。【参考方案2】:

环境变量可以由任何人设置和取消设置,丢失等等,如果有人甚至认为它是错误的来源,这些情况往往难以重现。

我肯定会选择 advapi。

【讨论】:

以上是关于environ("username") 与 advapi32.dll的主要内容,如果未能解决你的问题,请参考以下文章

如何在输入中将 <security:authentication property="principal.username"/> 放入 value=" &qu

使用ajax验证信息

js表单验证

JS表单验证代码

HTML 中的name属性和id属性有啥区别?

对象不能从 DBNull 转换为其他类型。