2017-03-03 9 views
2

私はこのプラグインを使用してWindowsサービスを作成します:https://github.com/coreybutler/node-windows。 私のサービスで外部プログラムを開始したい。 EDIT 1:ノードウィンドウが子process.exeを実行

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

その後、私はプラグインの方法を試してください。 EDIT2

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 私が「VIEW THE MESSAGE」を選択した場合、私のプログラムとノードbash (THIS LIKE:https://s3.amazonaws.com/cdn.freshdesk.com/data/helpdesk/attachments/production/4029645611/original/7daystodie-session0.png?1471375419)デスクトップのアプリなし

私はすでに問題を開いています:https://github.com/coreybutler/node-windows/issues/163

誰もが私を助けることができますか?

答えて

0

Github issueに記載されているように、これはおそらくアクセス許可の問題です。

明示的にユーザーコンテキストを定義しながら子プロセスを実行する最も細かい方法は、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はこれで動作しません)。私はまた、異なるバージョンのWindowsでrunasとのニュアンスに気付きました。問題を解決するのは難しいかもしれません。

+0

私は同じ問題を抱えています。また、管理者と完全なpermissiosでプロセスと子プロセスを実行すると動作しません! @ Mr.Orangeは、Windowsサービスの問題だと思っています。私はそのプロセスもWindows 10のためのバックグラウンドprocessoに行く参照してください! – Davide

+0

@Davide - 管理者権限では必ずしも十分ではないことに注意してください。 WindowsにELEVATED管理権限が必要な状況がいくつかあります。 – Corey

+0

問題は 'exe'がうまく始まります!!!しかし、それはバックグラウンドモードで実行され、GUIは表示されません。私たちは多くの異なるexeで試してみましたが、何も変わりません。 – Davide

関連する問題