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

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

本文关键字:调用 javascript Net 控件 类库 网页 Internet Explorer      更新时间:2023-09-26

我正在开发一个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);

我不认为可以从浏览器中读取环境变量。由于浏览器是为互联网设计的,为它们提供读取任何类型的系统设置的能力都会导致安全问题。没有人希望他/她访问的网站在互联网上阅读他的系统信息,对吧?我对做你正在努力实现的事情的可能性持怀疑态度。但是,您可能会考虑编写一个基于windows的示例应用程序,该应用程序从您的intranet网站下载,读取环境设置并提交给服务器。

这应该是不可能的,因为你可以编写访问本地计算机的程序是没有人感兴趣的(除了坏人)。

我不知道你有多少用户。但如果你确实需要这些信息,一个解决方案是创建一个程序,从计算机中提取所有需要的数据,并将其存储在映射到用户的数据库中。然后,当您在浏览器中需要信息时,您将从数据库中提取信息。