0

Windowsの起動時に起動したいプログラムがあります。そこで、レジストリ値SOFTWARE \ Microsoft \ Windows \ CurrentVersion\RunOnceにプログラムを作成しました。プログラムは、Windowsが起動するとすぐに実行されます。

ただし、他のプロセスが開始される前にプログラムを実行します。デスクトップが起動し、他のすべてのシステムプロセスが起動した後に、プログラムを起動させたいのですが。どうすればいいですか?

編集:プログラムに遅延を追加しました。プログラムにどのような遅延を加えても、プログラムが実行されるまで、デスクトップなどのプロセスは開始されません。

4

1 に答える 1

5

Microsoftによると:

HKEY_LOCAL_MACHINE ... \ RunOnceキーを除いて、すべてのキーとそのエントリは非同期でロードされます。したがって、RunServicesキーとRunServicesOnceキーのすべてのエントリは、同時に実行される可能性があります。

HKEY_LOCAL_MACHINE ... \ RunOnceキーのエントリは、未定義の順序で同期的にロードされます。

HKEY_LOCAL_MACHINE ... \ RunOnceキーは同期的に読み込まれるため、HKEY_LOCAL_MACHINE ... \ Run、HKEY_CURRENT_USER ... \ Run、HKEY_CURRENT_USER ... \ RunOnce、およびスタートアップフォルダのエントリを読み込む前に、すべてのエントリの読み込みを完了する必要があります。 。

つまり、RunOnceキーにSleep(INFINITE)を実行するプログラムを入れると、マシンが起動しなくなるということですか?面白い。

その記事に記載されている他のキーの1つを使用してください。または、RunOnceのセマンティクスが必要な場合は、実際のプログラムの起動後に終了するヘルパープログラムを使用してください。

于 2011-08-19T15:24:36.340 に答える