CreateFileMapping()のアクセス拒否について – プログラミング – Home

通知
すべてクリア

[解決済] CreateFileMapping()のアクセス拒否について


hiro
 hiro
(@hiro)
ゲスト
結合: 24年前
投稿: 40
Topic starter  

説明が下手かもしれませんが、ご意見を頂きたくよろしくお願いします。

CreateFileMapping()関数を用いた共有メモリーアクセスプログラムを
サービスに登録し、このプログラムがメモリーに書き込み、
もう一つのMFCダイアログで作成したプログラムでメモリーを読む
プログラムを作成しました。

ここで問題が発生し、
サービスに登録する前は、データがダイアログの方で見れたのですが、
サービスに登録したら、CreateFileMapping()関数の戻り値が
GetLastError()で見るとアクセス拒否のエラーが帰ってきます。

どのようなことが考えられるでしょうか?
サービスに登録すると、他のプログラムからサービスに登録したプログラムへの
アクセスは不能なのでしょうか?

マッピングの関数の引数の記述は以下の通りです。

#define MAPPING_MAX 1000 //マッピングオブジェクトの最高値(変更可能)
#define MAPPING_NAME hoge //マッピングオブジェクト名(変更可能)

hFileMap= CreateFileMapping(
(HANDLE)0xFFFFFFFF,
NULL,
PAGE_READWRITE,
0,
MAPPING_MAX,
MAPPING_NAME);

開発環境:VC.NET
OS:WindowsXP or 2000


引用未解決
トピックタグ
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

深くは知りませんが
サービス起動時のアクセス権限の設定が実際にログインしているIDでは利用できない
ようになっているのではないでしょうか

>サービスに登録する前はデータがダイアログの方で見れたのですが
同じユーザログイン上で実施しているため利用可能なのではないでしょうか?


返信引用
wood
 wood
(@wood)
ゲスト
結合: 23年前
投稿: 895
 

マルチポスト関心しませんね!
このスレは捨てハンですかね!


返信引用
hiro
 hiro
(@hiro)
ゲスト
結合: 24年前
投稿: 40
Topic starter  

みなさん、マルチポスト申し訳ありませんでした。
今後は、行いません。

woodさん申し訳ありませんでした。
>サービス起動時のアクセス権限の設定が実際にログインしている
>IDでは利用できないようになっているのではないでしょうか

woodさんのご意見を調査してみましたところ、
タスクマネージャのプロセスのユーザ名が
サービスで起動するとプログラムがSYSTEMになっていました。
実際自分がログインしているのはAdministratorなので
この部分でアクセス拒否となったのかもしれません。
今回プログラムは、ダイアログからはメモリへ書き込みが
ないので下記の通り”FILE_MAP_READ”でアクセスすることにしました。
今後の利用も考えなんとか打開してみたいと思います。
とりあえず、解決とのことで・・

hFileMap= CreateFileMapping(
(HANDLE)0xFFFFFFFF,
NULL,
FILE_MAP_READ,
0,
MAPPING_MAX,
MAPPING_NAME);


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました