Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从浏览器(Windows)启动exe_Javascript_C#_Windows_Browser_Activex - Fatal编程技术网

Javascript 从浏览器(Windows)启动exe

Javascript 从浏览器(Windows)启动exe,javascript,c#,windows,browser,activex,Javascript,C#,Windows,Browser,Activex,我需要从浏览器(不仅仅是IE)启动已安装的应用程序 从线程中,我了解到我需要实现和 我想检查一下是否有其他的实施方法 在我的场景中,我希望从客户机启动一个现有的应用程序。所以我可以将这个应用程序注册到uri方案并使用它 我唯一关心的是在这两种情况下(或者至少在第二种情况下),我们都必须对注册表进行更改。如果注册表设置不存在,这将不起作用 是否有其他不依赖于注册表设置或任何先决条件的方法 谢谢。如果没有您描述的类型,就无法在浏览器外调用可执行文件(我可能会在您的位置使用应用程序URI方案,因为它是

我需要从浏览器(不仅仅是IE)启动已安装的应用程序

从线程中,我了解到我需要实现和

我想检查一下是否有其他的实施方法

在我的场景中,我希望从客户机启动一个现有的应用程序。所以我可以将这个应用程序注册到uri方案并使用它

我唯一关心的是在这两种情况下(或者至少在第二种情况下),我们都必须对注册表进行更改。如果注册表设置不存在,这将不起作用

是否有其他不依赖于注册表设置或任何先决条件的方法


谢谢。

如果没有您描述的类型,就无法在浏览器外调用可执行文件(我可能会在您的位置使用应用程序URI方案,因为它是您最不需要定制的插件)。这是因为,如果您可以调用任何应用程序,而用户不需要进行注册表编辑或某些相关更改,那么您可以使用您知道将在用户机器上的任何应用程序执行任何您想要的操作。这叫做沙箱,上面有一篇不错的文章

沙箱是一个严格控制的环境,程序可以在其中运行 跑沙盒限制了一段代码的功能,使其与 无需添加其他权限即可获得所需的许多权限 这可能被滥用

例如,您的web浏览器基本上运行您在中访问的网页 沙箱。它们仅限于在浏览器中运行和访问 有限的资源集-他们无法在没有 权限或读取计算机的本地文件。如果你访问的网站 没有被沙箱隔离,与系统的其他部分隔离,访问 恶意网站就像安装病毒一样糟糕

正如他们所指出的,当您在浏览器中时,您已经处于沙箱中。如果您想编写一个可以从其中访问的应用程序,您需要在HTML、JavaScript等的功能和限制范围内工作

你可以在Windows上看到

没有此键,处理程序应用程序将无法启动

你的帖子似乎表明Windows确实是你的目标操作系统。如果您想在另一个操作系统上执行此操作(或者如果其他人阅读此问题),则方法将与您已经找到的不同(这些已经是堆栈溢出问题):

理论上,您可以创建特定于每个可能的浏览器的插件或配置应用程序,以完成完全定制的任务。然而,你会重新发明轮子,因为你需要同样的权限提升来安装你的应用/插件。此外,您将重新发明上述协议,并以某种方式提前分发应用程序进行安装

此外,当使用网络摄像头访问和地理定位等新的网络功能时,有时应用程序似乎能够顺利地访问用户的浏览器体验。实际上,我们在这里看到的是一些新的JavaScript API,取代了Flash小程序和其他我们过去需要通过第三方软件加以利用的东西

  • (或者可能是
    webkitGetUserMedia
    mozGetUserMedia
    ,具体取决于浏览器)允许使用网络摄像头和麦克风中的媒体。浏览器在允许此操作之前已经实现了权限提示,但应用程序仍然是一个JavaScript应用程序
  • 地理定位API被写入HTML5标准,最简单的实现(JavaScript)如下所示:
    navigator.Geolocation.getCurrentPosition(show_map)它仍然只是一个JavaScript库。如果您使用它,会提到添加一些错误处理/回退等。从IE 9开始就可以使用。查看其他浏览器的链接
  • 您可以使用
    navigator.registerProtocolHandler
    (阅读Mozilla文档中的更多内容),但是,除了内置协议(例如mailto)之外,您还需要在调用此函数的同一域上使用web应用程序处理URI。要设置一个处理程序来处理链接
    中的协议burger,可以编写:
    navigator.registerProtocolHandler(“burger”),
    "http://www.google.co.uk/?uri=%s",
    “汉堡商”)
    您可以在网站上找到更多信息,包括其他白名单方案,但您需要仔细挑选浏览器以支持并确保您的目标受众可以使用它。我喜欢在任何时候确定浏览器支持时引用
  • 我确实找到了一种方法,如果您假定能够让所有客户端计算机在使用链接之前运行一些脚本(具有SUDO权限)。这就是apt:Ubuntu中的链接调用包管理器的方式。由于这又回到了Windows解决方案的“创建一个可以在注册表中编辑MIME类型的安装脚本”领域,我想我可以到此为止

感谢您的回复。当我们尝试使用相机或麦克风时,浏览器会请求批准,然后继续。我还看到一些应用程序在用户批准的情况下启动外部应用程序(在Chrome上)。我只是想知道我有没有遗漏什么。我在底部添加了一些额外的项目,讨论我相信您已经看到的功能。如果您还有其他问题,请告诉我,但我想这已经涵盖了很多内容。再次感谢。它只需要在windows环境下工作。我已经尝试注册自定义uri并能够启动应用程序。我已尝试启动excel,我能够。但我无法打开任何工作表,因为它还将方案名称视为路径。有什么建议吗?我不完全同意这个评论。您是说您将url方案与Excel关联,但您也希望