C# 允许IE交互触发客户端本地代码的执行

C# 允许IE交互触发客户端本地代码的执行,c#,activex,browser,asp.net,interaction,C#,Activex,Browser,Asp.net,Interaction,我希望允许在受信任的网页上进行交互,以触发客户端上的代码执行。用户将使用IE作为web浏览器。要执行的代码文件将在客户端上可用。本地代码文件的方法界面将为网页所知。例如,这可用于将数据从浏览器保存到客户端上的预定义文件或本地代码文件中定义的任何其他操作 所有其他代码都将使用c#和aspx编写 要做到这一点,正确的方法(或简单的方法?)是什么?除非您想深入研究ActiveX,否则我担心IE不会提供任何其他界面来操作系统中的底层 这对客户端根本不安全。这被认为是黑客攻击(使用浏览器在客户端计算机上写

我希望允许在受信任的网页上进行交互,以触发客户端上的代码执行。用户将使用IE作为web浏览器。要执行的代码文件将在客户端上可用。本地代码文件的方法界面将为网页所知。例如,这可用于将数据从浏览器保存到客户端上的预定义文件或本地代码文件中定义的任何其他操作

所有其他代码都将使用c#和aspx编写


要做到这一点,正确的方法(或简单的方法?)是什么?

除非您想深入研究ActiveX,否则我担心IE不会提供任何其他界面来操作系统中的底层


这对客户端根本不安全。

这被认为是黑客攻击(使用浏览器在客户端计算机上写入数据)。无论用户是否信任您,无论您使用C#、JavaScript或任何其他技术,都不可能(非法使用漏洞攻击除外)做到这一点

假设这是可能的。您可以写入
c:/windows/
并销毁用户的系统。即使你不打算向全世界承诺你做得对,如果可能的话,其他人也可以做不那么可信的事。考虑到犯罪组织在IE中积极利用漏洞的数量,这不是你应该想要的

也就是说:要获得充分信任并能够做任何事情,可以通过以下方式之一来实现:

  • 为浏览器编写扩展或插件
  • 编写需要完全信任的ActiveX控件
  • 编写用户必须安装的应用程序
  • 使用完全信任VBScript或JScript并从脚本中打开和使用
  • 这两种都能给你充分的自由。然而,出于显而易见的原因,选项3是最常见的。所有这些都需要用户的许可(他们将得到一个弹出窗口,必须单击一次或多次“是”)

    选项4的一个示例如下(注意,不要使用C#,它只是服务器端,不能在浏览器中使用):

    //这是JScript,只能在IE中使用
    函数CreateSomeFile()
    {
    var fso=新的ActiveXObject(“Scripting.FileSystemObject”);
    var myFile=fso.CreateTextFile(“c:\\somefile.txt”,true);
    Writeline(“这是来自外层空间的Hello World”);
    myFile.Close();
    }
    

    更新:添加的代码示例

    无法准确告诉您。首先我想到的是开发一个浏览器插件或GoogleGears


    我认为Google Gears允许通过浏览器在本地创建和访问文件。

    一个简单的方法是为内部网应用程序编写一个IE扩展,实现URL方案(例如myapp://blahblahblah)并将其安装在客户端计算机上。然后,您的webapp可以包含使用该方案的链接。实现该方案的扩展可以将其解释为与安装在客户端计算机上的应用程序通信。

    当然,用户必须安装Google Gears并允许站点访问文件系统。
    // 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();
    }