説明
ログオン時にいくつかのプログラム/ファイルを実行したいと思っているので、スタートアップ フォルダーやスクリプトではなく、タスク スケジューラを使用しています。これは、特定のプログラムでは UAC の昇格が必要であり、タスク スケジューラの「最高権限で実行」によってプロンプトが抑制されると考えているためです。
問題
最初のアクションは適切に終了しないため、タスク アクションは同期的であるため、最初のアクションのみが実行されます。
それで、タスクを非同期にする方法を知っている人や、他の提案がある人はいますか?
設定
答え1
私はコメントの議論に基づいてここに来ましたそれで
正直に言うと、スタートアップ メニューには管理者権限を必要とするプログラムがありますが、私が介入しなくても問題なく動作するようです。
これらのプログラムをグループ ポリシーのログオン/ログオフ スクリプトに追加してみましたか? [コンピューターの構成] の [Windows の設定] にあります。これがうまくいくかどうかはわかりません。グループ ポリシーに基づく他の解決策があるかもしれませんが、私にはちょっと理解できません。
しかし、私はリクエストに応じてコメントを投稿することにしました。実際の質問に基づいてコメントを修正しました。
タスク スケジューラのタスクは、同時にではなく順番に実行されます。すべてのタスクを同時に (並行して) 実行したい場合は、同時に (またはログオン時などの同じイベントで) 実行される複数のタスクを作成するのが最も簡単です。必要に応じて、[タスクの遅延] 詳細オプションを使用して、タスクの開始順序をずらします。
答え2
各プログラムを起動するバッチ ファイルがあります。すべてのプログラムを非同期で実行し、各プログラム間に遅延も設定したいので (最初の 2 つのプログラムが完全に起動するまでに約 10 ~ 15 秒かかります)、各プログラム行の間に「ping localhost -n 15 >nul」を使用して遅延を設定します。
非常にうまく機能し、TS にはタスクが 1 つだけあることを意味します。
バッチファイルの例:
@echo off
::Start prog 1
"C:\Program Files\prog1\prog1.exe"
::Need to wait 15 seconds for it to start
ping localhost -n 15 >nul
:: Start prog 2
:: Further progs & delays here if required, etc,etc...
答え3
開始されたアクションのリストの最初のプログラムがまだ実行中であるため、タスク スケジューラの待機スクリプト ハンドラは、最初のプログラムが完了するまで 2 番目のプログラムを実行しません。これは、単一のプログラム/アクションまたは一連の短時間実行アクションのいずれかを開始することを目的としています。ここでは、各アクションを個別にスケジュールされたタスクとして実行します。
答え4
次のコマンドを使用して、バッチ ファイルからスケジュールされたタスクを実行できます。
C:\Windows\System32\schtasks.exe /run /tn "????????"
スケジュールされたタスクの名前はどこに????????
ありますか。たとえば、タスク スケジューラ ライブラリの下に MyApps というフォルダーを作成し、その下に Fraps というタスクを作成すると、コマンドは次のようになります。
C:\Windows\System32\schtasks.exe /run /tn "MyApps\Fraps"
これをショートカットで使用すると、UAC なしで直接 fraps を起動することもできます。
しかし、この場合は、まず Fraps を起動し、[全般] タブでオプションにチェックマークを付けますRun Fraps when Windows starts
。