C# - よく使うクラス - System.IO - MemoryMappedFileSecurity
- 1. 概要
- 2. 使い方
1. 概要
「System.IO.Stream.MemoryMappedFile」は、参考サイトによれば「メモリ マップト ファイルに対するファイル アクセスと操作に関して付与することのできるアクセス許可を表します。」とのことです。
共有メモリ的なものとして使っています。
本ページは、下記のサイトを参考にさせていただきました。
「MemoryMappedFileSecurity クラス (System.IO.MemoryMappedFiles) 」
「C# の MemoryMappedFile(共有メモリー)でエラーが出たときの対処法」
2. 使い方
偉そうには、言えない。
わたしは、この使い方しか知らない。
「MemoryMappedFile」を、「ASP」から「WEB」越しに使用しようとしたら、正に、参考サイトのように
System.UnauthorizedAccessException: パスへのアクセスは拒否されました。
場所 System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.OpenCore(String mapName, HandleInheritability inheritability, Int32 desiredAccessRights, Boolean createOrOpen)
場所 System.IO.MemoryMappedFiles.MemoryMappedFile.OpenExisting(String mapName, MemoryMappedFileRights desiredAccessRights, HandleInheritability inheritability)
場所 ...以下自分のコード
てな、例外でこけちゃったのです。
これを解消するのが、「MemoryMappedFileSecurity」でして。
参考サイトのまんまですが。
ShareMem = MemoryMappedFile.CreateNew(name, capacity);
MemoryMappedFileSecurity permission = ShareMem.GetAccessControl();
permission.AddAccessRule(
new AccessRule<MemoryMappedFileRights>("Everyone",
MemoryMappedFileRights.FullControl, AccessControlType.Allow));
ShareMem.SetAccessControl(permission);
セキュリティ的には、ずるずるではありますが、これで、問題は解消しました。
|
|