web-dev-qa-db-ja.com

Windowsで特定の開始パラメーターを使用してサービスを開始する方法

特定のパラメーターでサービスを開始するにはどうすればよいですか? 別の質問 で見つかりました

 net start servicename blah 

しかし、これを試すと、netが構文エラーをスローします。

何が悪いのですか?

編集:明確にするためにnet start servicenameは問題なく機能しますが、パラメータを渡す必要がありますサービス。サービスを開始する前に開始パラメーターを入力することで、services.mscでこれを手動で行うことができます。しかし、これをスクリプトからどのように実行できますか?

別の編集:申し訳ありませんが、私の質問はmisleading。私のテストでは、さらに多くのパラメーターがあり、/blahnet startが不満を言っているわけではありません。実際、スラッシュで始まるものはすべて問題ありません。したがって、net start servicename /blahは機能しますが、net start servicename blahは機能しません。 net start servicename /foo barが必要なので、問題はbarです。

18
sbi
sc start fooservice arg1 arg2 ...
29
user1686

NET STARTでは、私の知る限り、任意のパラメータを渡すことはできません(/で始まる必要があるようです)。適切なレジストリキーを変更してサービスを停止/開始するのが正しい方法だと思います。カスタムサービスの名前がMyServiceであると仮定します。

[HKLM\SYSTEM\CurrentControlSet\Services\MyService]
"ImagePath":C:\Projects\MyService\bin\MyService.exe Parameter1 Parameter2

実際には、より良い方法は、おそらくレジストリやファイルシステムなど、サービスが認識している場所に構成を保存し、必要な値を読み取ることです。ご覧のとおり、コマンドラインのカスタマイズは、本来よりも少し面倒です。

これがたまたま.NETで開発されたサービスである場合は、ファイルシステムに実行可能ファイルのnコピーを作成し、それぞれに適切なapp.configファイルからパラメーターを自動的に取得させることができます。

Win32ボックスの外に出すぎたようです。これはカスタム開発のように聞こえるため、他の提供されているソリューションはおそらく理想的ではないかもしれませんが、正しく機能し、より安全な方法です。

8
Goyuix

net startを使用する場合、eachパラメータの前にスラッシュが必要です。また、スペースを含むパラメーターを引用符で囲んでください。

net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"
4
Even Mien

net start servicename /foo単一の引数

net start servicename /"foo bar"文字列または引数のリスト

:この質問は8歳ですが、承認された回答についてコメントする評判がありません。これは2018年のGoogleでのトップの結果であるため、現在何が機能しているかを明確にしたいと思います質問最終編集へ。

3
MissingL_tter

コントロールパネルのservicesに表示される実際のサービス名を使用する必要があります。スペースが含まれている場合は、サービス名を引用符で囲む必要があります。

実際のサービス名を取得するには、コマンドプロンプトでパラメーターを指定せずにnet startと入力します。すべてのrunningサービスのリストが表示されるので、実際のサービス名を取得できます。次に、net start <servicename>を使用します

1
Robert Williams

InstSrvとSrvAnyはこれを支援できますか? ガイドとリンク

0
Dave M