マシンの起動時にユーザーの操作なしでアプリケーションを実行する必要があります。私はこれをすべてのWindows XP、Windows Vista、Windows Server 2003、Windows 7およびWindows Server 2008 OSで実行する必要があります。このため
は、私はこれらの手順、 WindowsサーバOSで「アクティブセッションID」を取得するにはどうすればいいですか?
- が
- 取得し、現在アクティブなセッション内で実行されているWinlogonプロセスのプロセスIDを取得しWTSGetActiveConsoleSessionId
- を使用して、アクティブなセッションIDを取得し、その後winlogonプロセスへのハンドル
- を使用して、winlogonプロセスのアクセストークンへのハンドルを取得します。OpenProcessToken
- は
- DuplicateTokenEx Winlogonプロセスのアクセストークンを複製CreateProcessAsUser
- を使用して、対話型のウィンドウステーションで、現在のユーザーのログオンセッションで新しいプロセスを作成し、すべてのハンドルを閉じます。
これはすべてのワークステーションで動作し、アクティブなコンソールIDが稼動しているサーバーで動作します。ステップ1ではActive Console Idを捕捉しているので、かなり明白です。 Windowsセッション0アイソレーションが導入される前に、OSでアプリケーションを起動するための他の方法がいくつか見つかりました。
は今、私はWTSGetActiveConsoleSessionIdが有効なIDを返し、新しいセッションを作成し、その中で自分のアプリケーションを起動したり、キャッチアクティブRDPセッションをANそれで自分のアプリケーションを実行したり、表示しない場合は、ユーザー画面にログインしているかどうかをキャッチする必要がありますユーザーが決定することができます(私のアプリケーションはスクリーンキャプチャであるため理想的でしょう)。私は彼らがこれを行う方法であるべきだと確信しており、私はあなたの助けが必要です。
ありがとうございました!
が、私はこの質問はすでにここに頼まれていると考えているあなたの時間を保存:http://stackoverflow.com/questions/5896878/running-a-program-when-windows-boots-ログイン前 – Jamey