繁体   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