簡體   English   中英

如何在Internet Explorer的網頁上從javascript調用.Net控件或類庫?

[英]How do I call a .Net control or class library from javascript on a web page in Internet Explorer?

我正在開發一個Intranet應用程序,它需要從客戶端計算機收集來自環境變量信息的系統信息,以便它可以在以后由服務器處理時使用。 瀏覽器是Internet Explorer,版本8和9。

我認為Silverlight是一種可能性,但它似乎太過限制(出於安全原因)能夠獲取我需要收集的信息。

到目前為止,尋找答案還沒有產生任何結果。 有什么想法嗎?

實際上,您可以編寫.Net類並在IE中從JavaScript實例化它。

  1. 讓你的班級ComVisible
  2. 給你的班級一個ProgId
  3. 使用regasm注冊.Net程序集
  4. 在JavaScript代碼中,調用new ActiveXObject

無論如何,仍然存在安全問題:用戶必須手動允許ActiveX執行。

我記得,它應該是那樣的(沒有經過測試):

在C#中:

[ComVisible(true)]
[ProgId("MyCompany.MyClass")]
public class MyClass
{
    public string UserName
    {
        get { return Environment.UserName; }
    }
}

在管理員控制台:

regasm MyClass.dll

在JavaScript中:

var myClass = new ActiveXObject("MyCompany.MyClass");
alert(myClass.UserName);

我不認為可以從瀏覽器中讀取環境變量。 由於瀏覽器是為Internet設計的,因此為他們提供讀取任何類型系統設置的能力會導致安全問題。 沒有人想要他/她在互聯網上訪問的網站正確閱讀他的系統信息嗎? 我對做你想要達到的事情的可能性持懷疑態度。 但是,您可以考慮編寫一個基於Windows的示例應用程序,該應用程序從您的Intranet網站下載,讀取環境設置並提交到服務器。

這是不可能做到的,因為你可以編寫訪問本地計算機的程序並不感興趣(除了壞人)。

我不知道你有多少用戶。 但是如果您確實需要這些信息,那么一種解決方案就是創建一個程序,從計算機中提取所有需要的數據,並將其存儲在映射到用戶的數據庫中。 然后,您將在瀏覽器中需要時從數據庫中提取信息。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM