2009-07-24 27 views
3

我正在使用經典ASP編寫的舊Intranet站點。我試圖找回他們登錄到他們的機器的用戶名。每個用戶都登錄到AD,但由於Intranet站點不使用AD,所以我無法從服務器檢索它。使用ActiveX獲取用戶名

我被告知可以使用ActiveX來檢索它。我做了一些研究,我發現下面的代碼(JavaScript的):

var wshshell = new ActiveXObject("WScript.shell"); 
var username = wshshell.ExpandEnvironmentalStrings("%username%"); 

目前我使用IE8和我得到一個對第一行的「自動化服務器不能創建對象」的錯誤。

1)任何想法,爲什麼我得到錯誤?

2)鑑於我的限制,是否有更好的方法可以做到這一點?

回答

6

如果這是在客戶端完成的,那麼您必須讓用戶將該站點添加到「受信任的站點」區域,並將安全級別設置爲最低。第1行應該在服務器端工作,但我不認爲第2行是正確的。

試試這個

var net = new ActiveXObject ("WScript.NetWork"); 
var username = net.UserName; 
1

基本上,它不可能使用Javascript來獲取客戶端的Windows機器的信息。 因爲它的範圍僅限於瀏覽器。

爲此,您需要創建COM對象或者說一個Activex對象,並且使用ASPX頁面時,您需要在首次從瀏覽器訪問您的頁面時將其部署到客戶端系統。

現在,ActiveX對象有一個功能使用JavaScript進行交互。您必須訪問COM對象或COM的類和功能,這些類和功能進一步與系統類交互以獲取系統信息。即登錄到客戶端的Windows用戶信息。

var net = new ActiveXObject ("WScript.NetWork"); 
var username = net.UserName; 

上面的代碼還初始化COM對象,如果沒有部署到客戶端系統,該腳本將無法正常工作。