簡體   English   中英

節點窗口運行子進程.exe

[英]node windows run child process.exe

我使用這個插件來創建一個 Windows 服務: https : //github.com/coreybutler/node-windows 我想用我的服務啟動一個外部程序。 編輯 1:

var cp = require("child_process");
cp.exec("C:\\Users\\test\\Desktop\\file.exe", function(error, stdout) {
}); 

隨后我嘗試使用插件的方法。 編輯2

node_windows.elevate("C:\\Users\\test\\Desktop\\file.exe",function(error,stdout){
 });

此方法啟動 exe,但我在桌面中看不到 GUI。 如果我選中services.msc選項 => Interact with desktop我會看到另一個窗口要求我確認程序的交互,如下所示: http : //help.tcadmin.com/images/d/dd/InteractWithDesktop.png如果我選擇“查看消息”,它將我重定向到另一個部分,其中只有我的程序和節點 bash,沒有桌面應用程序(像這樣: https : //s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/生產/4029645611/原件/7daystodie-session0.png?1471375419 )

我已經打開了一個問題: https : //github.com/coreybutler/node-windows/issues/163

任何人都可以幫助我嗎?

正如Github 問題中所述,這可能是權限問題。

在明確定義用戶上下文的同時運行子進程的最精細的方法是運行 cmd.exe。 因此,它可能類似於以下(未經測試的)偽代碼:

require('child_process').exec('cmd.exe', ['/c /env /user:username C:\nodejs\node.exe C:\path\to\myscript.js'], function(){...})

您可以在 technet 上閱讀有關cmdrunas 的更多信息。

這種方法伴隨着一大堆警告(這就是我建議避免它的原因)。 它使您的代碼特定於平台(即node-macnode-linux不適用於此)。 我還注意到 runas 在不同版本的 Windows 上的細微差別,並且很難確定問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM