2011-09-13 3 views
3

達成したいこと: 私のアプリケーションのインスタンスを固定数にカウントしたいと思います。アプリケーションの複数のインスタンスが起動している場合 、それが唯一の「ビューア」複数のユーザーのセマフォ

として動作するはずです。彼女は、サンプルアプリケーション

boost named_semaphore example

問題のコードです: すべてprocesse場合、それは正常に動作します1人のユーザーからのみ開始されます 他のユーザーとアプリケーションを開始すると、セキュリティ例外が発生します。

誰かが正しい方向に私を指すことができます(アクセスが許可されていない)、ブーストドキュメントは少しこのトピック;-)に欠けている
ログオンしているユーザーのすべての他からのアクセスを許可するように設定する必要がありますどのようなアクセス許可 ?

+1

「意図どおりの動作」のようなサウンド。管理者以外のユーザーは管理ユーザー(基本的なセキュリティ原則)に影響を及ぼすべきではないため、限られたリソースを排他的に要求することはできません。あなたは本当にあなたのアプリケーションを固定数のコンピュータ_に制限しようとしますか?または、固定数number_per user_を使用しましたか? – MSalters

+0

これはデフォルト動作ですが、変更したいと思います。 はい、ユーザーごとではなく、アプリケーション_コンピュータ_が必要です – nobs

答えて

1

私はWindowsのエキスパートではないので、答えは分かりませんが、named_semaphoresがどのように実装されているかを知る必要があります(boost.interprocessの「基本的な説明」を参照)。システム全体のアクセスを許可するこのリソースのアクセス許可ポリシーを設定します。したがって、boost.named_semaphoreコードを読み、ファイルを使用する場合はそのファイルのアクセス権を更新し、システムコールを使用する場合は、そのシステムコールのWindows APIドキュメントを参照してください。

2

残念ながら、boostはセマフォのデフォルトのセキュリティ属性を使用しており、変更する方法はありません。 MFCのATL::CSemaphoreまたはCSemaphore、またはWinApiのCreateSemaphoreを使用して、すべてのユーザーにアクセスを許可するセキュリティ記述子を構成します。私は

は、ブーストのためのドキュメンタリーのように見える解決策を見つけた

関連する問題