从greasemonkey启动本地可执行文件

发布于 2024-11-03 07:06:43 字数 647 浏览 2 评论 0原文

下面是我正在尝试的代码(加上一些变体),有一个对话框请求我的许可,但仍然出错

错误:获取属性 XPCComponents.classes 的权限被拒绝

unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 

var file = unsafeWindow.Components.classes["@mozilla.org/file/local;1"]
    .createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("d:\\test.bat");

var process = unsafeWindow.Components.classes["@mozilla.org/process/util;1"]
    .createInstance(Components.interfaces.nsIProcess);
process.init(file);

var args = ["argument1", "argument2"];
process.run(false, args, args.length);

这是不可能的吗?

Below is the code I am trying (plus a few variations), there is a dialog asking for my permission, but still errors out with

Error: Permission denied for to get property XPCComponents.classes

unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 

var file = unsafeWindow.Components.classes["@mozilla.org/file/local;1"]
    .createInstance(Components.interfaces.nsILocalFile);
file.initWithPath("d:\\test.bat");

var process = unsafeWindow.Components.classes["@mozilla.org/process/util;1"]
    .createInstance(Components.interfaces.nsIProcess);
process.init(file);

var args = ["argument1", "argument2"];
process.run(false, args, args.length);

Is this just going to be impossible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

泼猴你往哪里跑 2024-11-10 07:06:43

@Jano 答案是正确的,但您仍然可以使用自定义协议处理程序(例如 myprotocol://parameters)调用 .bat 文件。此处还进行了解释:如何在本地运行通过 HTML/javascript 通过 Chrome 运行程序 (exe)

将此键添加到注册表中:

HKEY_CLASSES_ROOT
   myprotocol
      (Default) = "URL:Test Protocol"
      URL Protocol = ""
      shell
         open
            command
               (Default) = "d:\test.bat" "%1"

并在 .bat 内部捕获参数:

set param=%1
echo Parameter is "%param:~13,100%

其中 :~13,100 裁剪参数的前 13 个字符(myprotocol://)

然后在您的脚本中只需使用 window.location$.ajax 上的自定义协议 URL 或分配给 < code>href

@Jano answer is right, but you can still invoke the .bat file using a custom protocol handler such as myprotocol://parameters. Also explained here: How to run local program (exe) via Chrome via HTML/javascript

Adding this keys to your registry:

HKEY_CLASSES_ROOT
   myprotocol
      (Default) = "URL:Test Protocol"
      URL Protocol = ""
      shell
         open
            command
               (Default) = "d:\test.bat" "%1"

And inside the .bat to capture the parameter:

set param=%1
echo Parameter is "%param:~13,100%

Where :~13,100 Crops the first 13 characters of the parameter (myprotocol://)

Then in your script just use the custom protocol URL on window.location, $.ajax or assign to an <a>'s href.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文