2010-11-12 45 views
0

我們有一個現有的應用程序,它使用System.IO.Packaging.Package類讀取大量的結構化數據。我們的應用程序在所有情況下都能正常工作,除非嘗試從只讀源(如CD或DVD)打開包時。由System.IO.Packaging.Package.Open()引發的UnauthorizedAccessException()

下面一行是我們的應用程序拋出異常的點,如果是packagepath的一個只讀介質:

_ourPackage = Package.Open(PackagePath, FileAccess.Read); 

當數據被存儲在CD上面的行拋出UnauthorizedAccessException上。我們不確定這是爲什麼發生。我們試圖以管理員身份運行,但沒有任何效果。

如上所述,我們僅指定讀取訪問權限,因爲此特定進程只需要讀取數據,並且對於我們通過CD或DVD等介質分發我們的打包數據將是一種常見的情況。

任何想法,爲什麼我們可能會遇到這種情況?

回答

1

您不指定FileMode,默認是FileMode.OpenOrCreate。當你在CD-ROM上做這個時,不知道有多少Windows是這樣的。使用讓您指定FileMode.Open的重載。下一步是試圖找出Windows爲什麼不喜歡你。

0

與我們的應用程序有同樣的問題。雙擊Outlook中的電子郵件附件時,文檔被複制到臨時Internet文件目錄並設置爲只讀。當試圖打開包(只讀文件)時,引發了UnauthorizedAccessException。

同時指定FileMode.OpenFileAccess.Read解決問題:

using (Package package = Package.Open(projFilePath, FileMode.Open, FileAccess.Read)) 
{ 
    // do stuff 
} 
相關問題