2013-07-29 20 views
1

我創建的應用程序,人們將使用遠程桌面連接登錄到我們的服務器,但我需要通過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 

加上其他一些方法,但一切似乎回到是「服務器名稱$」。我是否錯過了IIS中的某些東西,或者我是否完全錯誤地使用了棒子?

任何幫助將不勝感激!

+1

'Protected'不是在VBScript有效的關鍵字,因此所有的命令應該失敗。你的意思是VB.net嗎? –

+0

對不起,一直在這麼多的項目之間閃動讓我感到困惑 –

回答

1
  • CreateObject("WScript.Network").UserName

    這將返回在其上下文中的腳本/應用程序運行在用戶的用戶名。

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

    這應該失敗,因爲WshNetwork對象不具有ExpandEnvironmentStrings方法。你需要一個WshShell對象,而不是:

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

    這大概應該返回在其上下文中的腳本/應用程序在運行用戶的用戶名。它應該在失敗,因爲你只能通過一個WshShell對象訪問Environment集合:

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

    用戶(帳號)名稱都存儲在sAMAccountName屬性,而不是在cn屬性。

+0

謝謝你的回答,但我應該怎麼做呢?因爲你指出的所有內容都給出了相同的結果,「服務器名稱$」或「服務器名稱」而不是用戶名 –

+0

嘗試使用'WScript.Echo CreateObject(「WScript.Network」)行來運行VBScript。 UserName'在與您的應用程序相同的上下文中。它是否產生相同的輸出?另外,你最初如何運行你的應用程序? –

+0

我又收到了「ServerName $」。它通過瀏覽器運行,但它將通過服務器上的Internet Explorer進行訪問,用戶將使用遠程桌面連接到服務器。這有助於解決兼容性問題以及其他一些問題。 –

相關問題