如何在Internet Explorer中从网页上的javascript调用.Net控件或类库
本文关键字:调用 javascript Net 控件 类库 网页 Internet Explorer | 更新日期: 2023-09-27 18:21:53
我正在开发一个intranet应用程序,该应用程序需要从客户端机器的环境变量信息中收集系统信息,以便在以后的处理中由服务器使用。浏览器为Internet Explorer版本8和9。
我认为Silverlight是一种可能性,但它似乎受到了太多的限制(出于安全原因),无法获取我需要收集的信息。
到目前为止,寻找答案还没有任何结果。有什么想法吗?
实际上,您可以编写一个.Net类,并在IE.中从JavaScript中实例化它
- 让你的课成为
ComVisible
- 给你的班级一个
ProgId
- 使用
regasm
注册.Net程序集 - 在您的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网站下载,读取环境设置并提交给服务器。
这应该是不可能的,因为你可以编写访问本地计算机的程序是没有人感兴趣的(除了坏人)。
我不知道你有多少用户。但如果你确实需要这些信息,一个解决方案是创建一个程序,从计算机中提取所有需要的数据,并将其存储在映射到用户的数据库中。然后,当您在浏览器中需要信息时,您将从数据库中提取信息。