このスーパーユーザーの質問 に従ってスケジュールされたタスクを作成した後、UACプロンプトなしでサービスを正常に開始できます。選択したオプションは次のとおりです。
Start a program
_Program\script
_ = _C:\Windows\System32\net.exe
_Add arguments (optional)
= _start "SERVICE-NAME"
_次に、バッチファイルで_schtasks /run /tn TASK-NAME
_を呼び出します。これをテストした後、バッチファイルへのショートカットを作成し、Run
オプションをMinimised
に設定しました。
これは、実際のサービスが開始されたときに最大化されたコマンドプロンプトウィンドウが単一行_The SERVICE-NAME service is starting
_でポップアップすることを除いて、すべて機能します。これは、数秒後に消えます。
ポップアップなしでサイレント(または最小化)にターゲットプログラムを開始するようにタスクスケジューラに指示するにはどうすればよいですか?ポップアップコマンドプロンプトが最小化されていれば問題ありません。
問題は、ショートカットを最小化して実行するように構成すると、タスクが実行するプログラムではなく、スケジュールされたタスクを開始するプログラムのみを最小化して起動することです。 Rube Goldbergマシンの起動シーケンスに別のピースが必要な場合は、次の変更を加えます。
Program\script
_ = _C:\Windows\System32\cmd.exe
_Add arguments (optional)
= _/c start /min net start "SERVICE-NAME"
_最初の「開始」は、2つの関数に使用する_cmd.exe
_ start
コマンドです。
net.exe
_を最小化して起動します。taskeng.exe
_が終了するのを待つのではなく、起動するとすぐに_net.exe
_を終了します。_taskeng.exe
_が起動するまで_net.exe
_が短時間点滅するため、このソリューションは完全ではありませんが、通常は1秒未満です。
ウィンドウをまったく点滅させずにサービス(または他のプログラム)を開始できます最小化されていなくても。
タスクを作成します。
mshta.exe
_"javascript: new ActiveXObject('Shell.application').ShellExecute('net.exe', 'start <SERVICE-NAME>', '', 'open', 0); close();"
サービスを開始するには管理者権限が必要なので、最初のタブで最高の権限で実行をオンにします。
ウィンドウを表示せずにタスクを実行するには、同じトリックを使用します。次のコマンドでショートカットを作成します。
_mshta.exe "javascript: new ActiveXObject('Shell.application').ShellExecute('schtasks.exe', '/run /tn <TASK-NAME>', '', 'open', 0); close();"
_
schtasks
コマンドは「アクセスが拒否されました」で失敗します。/tn <TASK-NAME>
_はシェルからの_/tn <FOLDER>\<TASK>
_であり、mshta
コマンドでエスケープするにはバックスラッシュを2つする必要がありますショートカットの。mshta
を使用するタスクを疑わしいまたは潜在的なリスクと見なして削除する場合があります。net.exe
_をプログラムの名前で置き換え、_start <SERVICE-NAME>
_の部分を必要なパラメーターで置き換えるだけです。