如何在Internet Explorer的网页上从javascript调用.Net控件或类库?

amb*_*ber 2 .net javascript c# internet-explorer

我正在开发一个Intranet应用程序,它需要从客户端计算机收集来自环境变量信息的系统信息,以便它可以在以后由服务器处理时使用.浏览器是Internet Explorer,版本8和9.

我认为Silverlight是一种可能性,但它似乎太过限制(出于安全原因)能够获取我需要收集的信息.

到目前为止,寻找答案还没有产生任何结果.有什么想法吗?

Ben*_*hon 6

实际上,您可以编写.Net类并在IE中从JavaScript实例化它.

  1. 上课 ComVisible
  2. 给你的班级一个 ProgId
  3. 注册.Net程序集 regasm
  4. 在您的JavaScript代码中,请致电 new ActiveXObject

无论如何,仍然存在安全问题:用户必须手动允许ActiveX执行.

我记得,它应该是那样的(没有经过测试):

在C#中:

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

在管理员控制台:

regasm MyClass.dll
Run Code Online (Sandbox Code Playgroud)

在JavaScript中:

var myClass = new ActiveXObject("MyCompany.MyClass");
alert(myClass.UserName);
Run Code Online (Sandbox Code Playgroud)