掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
サービス間での通信を行うには? (ID:69942)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
CreateFileMapping の第2引数が NULL ですね。 この引数は、「よくわからないのでとりあえず NULL」にしがちで、今回のようなケースでもなければ大抵それで問題にならないのですが、今回はどうもそれが原因みたいです。 あと、OpenFileMapping の第1引数が NULL なのはおかしいですね。ここはポインタじゃありませんから。 CreateFileMapping の第2引数は SECURITY_INFORMATION 構造体へのポインタです。 この構造体の lpSecurityDescriptor が、セキュリティ記述子へのポインタになります。 セキュリティ記述子は、このオブジェクトに対して、誰がどんなアクセスをしようとした時に許可するか・拒否するか等の情報が格納されます。 第2引数が NULL ですと、デフォルトのセキュリティ記述子が使われます。 デフォルトのセキュリティ記述子は、そのオブジェクトの作成者と LocalSystem にのみアクセスを許可します。 http://support.microsoft.com/kb/318825/ja 従って、そのオブジェクトの作成者でも LocalSystem でもない一般ユーザーアカウントで実行されているアプリからは、Open に失敗する、というのが原因だと思われます。 ちょっと面倒くさいですが、連携アプリを実行するユーザに対してアクセスを許可するようなセキュリティ記述子を作って、第2引数に渡してやる必要があるでしょう。 1. ACL を作る 2. ACL に、連携アプリを実行するユーザにアクセスを許可するような ACE を追加する 3. セキュリティ記述子を作る 4. セキュリティ記述子に ACL を追加する 5. 作ったセキュリティ記述子を入れた SECURITY_INFORMATION 構造体を使って CreateFileMapping する という流れになります。 詳しくは、このへん http://eternalwindows.jp/security/accesscontrol/accesscontrol00.html を参照してください。
←解決時は質問者本人がここをチェックしてください。
戻る
掲示板システム
Copyright 2020 Takeshi Okamoto All Rights Reserved.