web-dev-qa-db-ja.com

Windowsでバックグラウンドでプロセスを実行する方法はありますか? Windowsに対応するNohup

Nohupはバックグラウンドでプロセスを実行します。 Windowsに相当するものはありますか?

12
Jader Dias

Startコマンドを使用して、コマンドウィンドウのバックグラウンドでプロセスを実行できます。

command1
command2
start command3
command4

command2はcommand1が完了するまで待機しますが、command4はcommand3が完了するまで待機しません。

ログオンしているユーザーとは別に実行する必要がある場合は、プロセスをサービスとして開始する必要があります anysrv.exe を使用できます

8
Aragorn

あなたはWindowsサービスを見たいかもしれません。 Windowsサービスとして任意のプロセスをホストするためにダウンロードできるいくつかのツールがあります。これにより、Windowsの起動時にプロセスがバックグラウンドで読み込まれるため、ユーザーの操作が不要であれば、このようにホストすることができます。

Windows Server 2003リソースキット

お探しのツールはsrvany.exeです。

6
Spence

Windowsで、ユーザーが開始したプロセスをログオフ後も実行し続けることができる唯一の方法(つまり、「Nohup」が行うこと)は、「スケジュールされたタスク」またはWindowsサービスとして開始することです。ユーザーがログオフすると、ログオンセッションのすべてのプロセスが強制終了されます。

「スケジュールされたタスク」メソッドを試すゲームの場合は、プログラムでそれらを作成する方法を知りたいと思うでしょう。 Win32_ScheduledJobWMIクラスはそれを行うことができます。ドキュメントはここに詳細に提供されています: http://www.Microsoft.com/technet/scriptcenter/guide/sas_man_rsxs.mspx?mfr=true 基本的に、あなたは(恥知らずにマイクロソフトから盗まれた) ):

Set objService = GetObject("winmgmts:\\.")
Set objNewJob = objService.Get("Win32_ScheduledJob")
errJobCreated = objNewJob.Create("Program-to-execute.exe", "ugly-formatted-time-string-per-Microsoft-docs",True ,1 OR 4 OR 16, , ,JobID)
If Err.Number = 0 Then
 Wscript.Echo "New Job ID: " & JobID
Else
 Wscript.Echo "An error occurred: " & errJobCreated
End If

"joe user"にスケジュールされたタスクを作成する権限を与えるには、%SystemRoot%\ Tasksフォルダーのアクセス許可を変更する必要があります。その前の情報については、こちらをご覧ください: http://technet.Microsoft.com/en-us/library/cc785125(WS.10).aspx

5
Evan Anderson

これはすべて、最終的な目的が何であるかに依存します。ユーザーがログオンしている場合にのみ実行するオプションを無効にして、スケジュールされたタスクを実行できます。リモートマシンからpsexecを使用できます。プロセスをサービスとして実行する方が良いかもしれません。 this Google searchthis other Google searchthis thread 、および this other thread をチェックして、潜在的なリードを探します。ソリューションの検索で。結局のところ、WindowsマシンにはNohupに相当するexactがないようです。

0
Wesley