尝试使用VB.net获取AD用户名,但返回的serverName $

时间:2013-07-29 10:48:27

标签: vb.net active-directory

我正在创建一个应用程序,人们将使用远程桌面连接登录到我们的服务器,但我需要通过VB.net获取AD用户名并存储它。我已经尝试了很多获取用户名的方法,例如:

Protected oNet = CreateObject("WScript.NetWork")
Protected user5 = oNet.UserName
Protected userName = oNet.ExpandEnvironmentStrings("%UserName%")

Protected userName1 = Environment.UserName

Protected objSysInfo = CreateObject("ADSystemInfo")
Protected objUser = GetObject("LDAP://" & objSysInfo.UserName)

Protected userName2 As String = objUser.CN

另外还有其他一些方法,但似乎只是返回的是“Server-Name $”。我是否在IIS中遗漏了某些内容,或者我刚刚完成了错误的操作?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:1)

  • CreateObject("WScript.Network").UserName

    这应该返回运行脚本/应用程序的用户的用户名。

  • CreateObject("WScript.Network").ExpandEnvironmentStrings("%UserName%")

    这应该失败,因为WshNetwork对象没有ExpandEnvironmentStrings方法。您需要一个WshShell对象:

    CreateObject("WScript.Shell").ExpandEnvironmentStrings("%USERNAME%")
    
  • Environment.UserName

    这可能应该返回在中运行脚本/应用程序的用户的用户名。它应该在中失败,因为您只能通过Environment对象访问WshShell集合:

    CreateObject("WScript.Shell").Environment("PROCESS")("USERNAME")
    
  • GetObject("LDAP://" & CreateObject("ADSystemInfo").UserName).CN

    用户(帐户)名称存储在sAMAccountName属性中,而不是cn属性中。