Windows Vistaでのファイルマッピングオブジェクト – プログラミング – Home

Windows Vistaでのファイル...
 
通知
すべてクリア

Windows Vistaでのファイルマッピングオブジェクト


kenjiro
 kenjiro
(@kenjiro)
ゲスト
結合: 19年前
投稿: 1
Topic starter  

VS.NET2003:MFCアプリケーション

Windows Vista(32ビット版)上で動作する
MFCアプリケーションを作成しています。

名前付きのファイルマッピングオブジェクトを作成すると、
Vista以前のOSでは問題なかったパターンで、Win32API関数が
エラーを返してきています。

以下、プログラムの流れです。

1.GetTempPath()にて、ログオンユーザーのテンポラリフォルダ
のパスを取得。

2.1.で取得したパス(例:C\:Users\[ユーザー名]\AppData\Local\Temp)
のフォルダにCreateFile()でファイルを作成し、共有データを書き込み。

3.CreateFileMapping()で、2.で作成したファイルに対して、
名前付きマッピングオブジェクトを作成する。
このとき、オブジェクト名にGlobal\...というように、グローバル名前空間で
オブジェクトを作成しようとすると、CreateFileMapping()が失敗します。
GetLastError()のエラー情報は(5:アクセスが拒否されました。 )
が返ってきています。

4.3.でマッピングオブジェクトの作成に成功した場合は、
別のプログラムのプロセスから作成されたオブジェクトを
OpenFileMapping()で開く。

3.でグローバル名前空間でマッピングオブジェクトを作成している理由は、
「ユーザーの簡易切り替え(Fast user switching)」によって、
他のユーザーでログオンしてから同じプログラムを実行し、
別のプロセスからOpenFileMapping()で作成された
ファイルマッピングオブジェクト開こうとしたときに、
Globol\..でオブジェクトを作成しておかないと失敗するためです。
(「ユーザーの簡易切り替え」を利用しない限りは、Global\..で
作成しなくても問題ありませんでした。)

同じコードがWindowsXP上では、3.のCreateFileMapping()は
成功していました。
ただし、XPでは1.で取得したテンポラリフォルダのパスは
C:\Documents and Settings\[ユーザー名]\Local Settings\Temp
となっており、でVistaからアクセス権まわりの仕様が変更された(?)
ことにより、上述のような問題が起きているのだと想像しています。

以上について、何か情報や回避方法などご存知でしたら、
ご教授いただけないでしょうか?


引用解決済
トピックタグ
Multi Posting
 Multi Posting
(@Multi Posting)
ゲスト
結合: 19年前
投稿: 15
 

http://forums.belution.com/ja/vc/000/353/76.shtml

> 発言される前に「使用上の注意」を必ずお読み下さい。

> ■ マルチポストについて
>
> マルチポストとは、「同じ内容の質問などを複数の掲示板等に書き込むこと」です。
> この行為はマナー違反として嫌われています。マルチポストは行わないで下さい。
>
>
> 誤ってマルチポストしてしまった場合には、必ず全ての掲示板にどのように
> 解決したかを記述し、かつお礼を書き込んで下さい。


返信引用
KING・王
 KING・王
(@KING・王)
ゲスト
結合: 20年前
投稿: 122
 

ついでなので。

> Windows Vista(32ビット版)上で動作する
> MFCアプリケーションを作成しています。

環境の情報が不足していると思います。
Windows Vistaはまだ、一般に正式リリースされておらず、現状はβ版等であり、
配布時期等によりシステムの状況が異なっていると思います。

今回のWindowsのバージョンアップに関しては、システム部分の変更もかなりあるようなので、
どの段階のバージョンかによって、システム周辺の動作も異なる可能性がありそうです。

#すいません。Vista関係の情報はもっておりません。
#βテスターの不具合報告等をおこなっているところでたずねるしかないのでは?


返信引用
επιστημη
 επιστημη
(@επιστημη)
ゲスト
結合: 22年前
投稿: 1301
 

http://forums.microsoft.com/msdn-ja/ShowPost.aspx?PostID=300494&SiteID=7

> マルチポストとは、「同じ内容の質問などを複数の掲示板等に書き込むこと」です。
> この行為はマナー違反として嫌われています。マルチポストは行わないで下さい。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

同時に3つ以上とは..........
#msがNEWS以外に掲示板の行ってたとは知りませんでした。


返信引用
ITO
 ITO
(@ITO)
ゲスト
結合: 22年前
投稿: 1235
 

修正

 #msがNEWS以外に掲示板もおこなってたとは知りませんでした。


返信引用
PATIO
(@patio)
Famed Member
結合: 3年前
投稿: 2660
 

ちなみにメーリングリスト上も流れていたりして。(--;

http://mfc.acty-net.ne.jp/ml/mfc/subfrm-tree.html


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

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