昇格を必要とせずに実行されるWindowsアプリがあります。アプリの実行中のすべてのインスタンス間で共有されるメモリ配列のファイルマッピングオブジェクトを作成する必要があります(これらのインスタンスの一部は異なるログオンセッションで実行される場合があることに注意してください)。
CreateFileMapping APIを呼び出して、グローバル名で作成します。つまり、アクセスを許可するGlobal\sharedname
セキュリティ記述子を使用しますが、そのAPIはエラーコード5またはで失敗します。all
everyone
ERROR_ACCESS_DENIED
次に、ドキュメントを読み始めましたが、プロセスにSeCreateGlobalPrivilege
特権が必要であることがわかりました。しかし、その特権を割り当てようとすると、AdjustTokenPrivilegesがエラーコードを返しERROR_NOT_ALL_ASSIGNED
、スタックします...。
それで、ここでのトリックは何ですか、その気紛れなMSは私たちにそれをどのように望んでいますか?
PS。all access for everyone
以前は、同じセキュリティ記述子と名前で問題なくグローバルな名前付きミューテックス(共有メモリへの同期アクセス用)を作成できましたGlobal\sharedmutex
。