.NET 4.0はベータ版であることに気付きましたが、誰かがこれに対する解決策を持っていることを望んでいます。DLLからメモリマップトファイルを作成しようとしています。
FileStream file = File.OpenRead("C:\mydll.dll");
using (MemoryMappedFile mappedFile = MemoryMappedFile.CreateFromFile(file,
"PEIMAGE", 1024 * 1024, MemoryMappedFileAccess.ReadExecute))
{
using (MemoryMappedViewStream viewStream = mappedFile.CreateViewStream())
{
// read from the view stream
}
}
残念ながら、私が何をしてもUnauthorizedAccessException
、MSDNのドキュメントに次のように記載されているが常に表示されます。
オペレーティングシステムは、ファイルへの指定されたアクセスを拒否しました。たとえば、アクセスはWriteまたはReadWriteに設定されていますが、ファイルまたはディレクトリは読み取り専用です。
Sysinternals Process Monitorを使用してアプリケーションを監視しました。これは、ファイルが実際に正常に開かれていることを示しています。他の非DLLファイルのメモリマッピングも試しましたが、同じ結果になりました。