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