我想允许在受信任的网页上进行交互以触发客户端上代码的执行。用户将使用 IE 作为网络浏览器。要执行的代码文件将在客户端上可用。网页会知道本地代码文件的方法接口。例如,这可以用于将数据从浏览器保存到客户端上的预定义文件或本地代码文件中定义的任何其他操作。
所有其他代码将使用 c# 和 aspx 编写。
这样做的正确方法(或简单方法?)是什么?
我想允许在受信任的网页上进行交互以触发客户端上代码的执行。用户将使用 IE 作为网络浏览器。要执行的代码文件将在客户端上可用。网页会知道本地代码文件的方法接口。例如,这可以用于将数据从浏览器保存到客户端上的预定义文件或本地代码文件中定义的任何其他操作。
所有其他代码将使用 c# 和 aspx 编写。
这样做的正确方法(或简单方法?)是什么?
除非你想深入研究 ActiveX,否则我担心 IE 不提供任何其他接口来操作系统中的底层级别。
这对客户来说根本不安全。
不能具体告诉你。首先,我想到的是开发浏览器插件或 Google Gears。
我认为 Google Gears 允许通过浏览器在本地创建和访问文件。
为 Intranet 应用程序执行此操作的一种简单方法是编写实现 URL 方案的 IE 扩展(例如 myapp://blahblahblah)并将其安装在客户端计算机上。然后您的 web 应用程序可以包含使用该方案的链接。实现该方案的扩展可以将其解释为与安装在客户端计算机上的应用程序进行通信。
这被认为是黑客攻击(使用浏览器在客户端计算机上写入数据)。无论用户是否信任您,无论您使用 C#、JavaScript 还是任何其他技术,都没有可能的方式(除了非法使用漏洞利用)来做到这一点。
暂时假设这是可能的。您可以写入c:/windows/
和销毁用户的系统。即使你不打算向世界承诺你做对了,如果可能的话,其他不太值得信赖的人也可以这样做。考虑到犯罪组织在 IE 中积极利用的漏洞数量,这不是您应该想要的。
也就是说:要获得完全的信任并能够做任何事情,可以通过以下方式之一来完成:
FileSystemObject
使用完全信任的 VBScript 或 JScript 并从脚本中打开和使用。这些都给你充分的自由。出于显而易见的原因,选项 3 是最常见的。所有这些都需要用户的许可(他们会得到一个弹出窗口并且必须单击是一次或多次)。
选项 4 的示例如下(注意,放弃使用 C# 的想法,这只是服务器端,不能在浏览器中使用):
// this is JScript and works within <script> in IE only
function CreateSomeFile()
{
var fso = new ActiveXObject("Scripting.FileSystemObject");
var myFile = fso.CreateTextFile("c:\\somefile.txt", true);
myFile.Writeline("this is Hello World from Outer Space");
myFile.Close();
}
更新:添加了代码示例