特定のパラメーターでサービスを開始するにはどうすればよいですか? 別の質問 で見つかりました
net start servicename blah
しかし、これを試すと、net
が構文エラーをスローします。
何が悪いのですか?
編集:明確にするためにnet start servicename
は問題なく機能しますが、パラメータを渡す必要がありますサービス。サービスを開始する前に開始パラメーターを入力することで、services.msc
でこれを手動で行うことができます。しかし、これをスクリプトからどのように実行できますか?
別の編集:申し訳ありませんが、私の質問はmisleading。私のテストでは、さらに多くのパラメーターがあり、/blah
net start
が不満を言っているわけではありません。実際、スラッシュで始まるものはすべて問題ありません。したがって、net start servicename /blah
は機能しますが、net start servicename blah
は機能しません。 net start servicename /foo bar
が必要なので、問題はbar
です。
sc start fooservice arg1 arg2 ...
NET START
では、私の知る限り、任意のパラメータを渡すことはできません(/で始まる必要があるようです)。適切なレジストリキーを変更してサービスを停止/開始するのが正しい方法だと思います。カスタムサービスの名前がMyServiceであると仮定します。
[HKLM\SYSTEM\CurrentControlSet\Services\MyService]
"ImagePath":C:\Projects\MyService\bin\MyService.exe Parameter1 Parameter2
実際には、より良い方法は、おそらくレジストリやファイルシステムなど、サービスが認識している場所に構成を保存し、必要な値を読み取ることです。ご覧のとおり、コマンドラインのカスタマイズは、本来よりも少し面倒です。
これがたまたま.NETで開発されたサービスである場合は、ファイルシステムに実行可能ファイルのnコピーを作成し、それぞれに適切なapp.configファイルからパラメーターを自動的に取得させることができます。
Win32ボックスの外に出すぎたようです。これはカスタム開発のように聞こえるため、他の提供されているソリューションはおそらく理想的ではないかもしれませんが、正しく機能し、より安全な方法です。
net start
を使用する場合、eachパラメータの前にスラッシュが必要です。また、スペースを含むパラメーターを引用符で囲んでください。
net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"
net start servicename /foo
単一の引数
net start servicename /"foo bar"
文字列または引数のリスト
注:この質問は8歳ですが、承認された回答についてコメントする評判がありません。これは2018年のGoogleでのトップの結果であるため、現在何が機能しているかを明確にしたいと思います質問最終編集へ。
コントロールパネルのservicesに表示される実際のサービス名を使用する必要があります。スペースが含まれている場合は、サービス名を引用符で囲む必要があります。
実際のサービス名を取得するには、コマンドプロンプトでパラメーターを指定せずにnet start
と入力します。すべてのrunningサービスのリストが表示されるので、実際のサービス名を取得できます。次に、net start <servicename>
を使用します
InstSrvとSrvAnyはこれを支援できますか? ガイドとリンク