この質問をするのは、ログオン画面から実行できるスクリーンセーバー アプリを Delphi で作成するのが難しいことがわかったからです。
質問を参照してください: Delphi の Windows 7 ログオン スクリーンセーバー
問題 (または少なくとも 1 つの問題) を特定の Win API 呼び出しに絞り込みましたCreateEvent。
SyncEvent := CreateEvent(nil, True, False, '');
if SyncEvent = 0 then
RaiseLastOSError;
このコードは、ログオン画面から呼び出された場合にのみ失敗します。GetLastError は、アクセスが拒否されたことを返します。したがって、ログオン画面のセキュリティ制限により、CreateEvent(nil, True, False, '');必要に応じてイベントを作成できないことは明らかです。
(イベントがどのようにして悪用可能なセキュリティ リスクになるのか、私にはよくわかりません。)
質問は、ログオン画面からイベントを作成することは可能ですか? おそらく次のいずれかを介して:
- 適切な
lpEventAttributes - または、代わりに CreationEventEx を呼び出します。
この問題は Delphi で発生しましたが、これは Win API に関するものです。お好きな言語でお気軽にご回答ください。