10

Zipフォルダー内の画像ファイルを直接クリックして開くファイルで画像ビューアーアプリを動作させようとしています(Windowsエクスプローラーを使用してZipファイルを参照します)。アプリケーションは、次のような正しいコマンド ラインで実行されているようです。

"C:\myApp.exe" "C:\Users\Admin\AppData\Local\Temp\Temp1_Wallpapers.zip\Wallpaper1.jpg"

ファイルは次のコードで読み取られています。

using (var fs = new FileStream(path, FileMode.Open))

そして、その行で例外がスローされます。

Exception:Thrown: 「パス 'C:\Users\Admin\AppData\Local\Temp\Temp1_Wallpapers.zip\Wallpaper1.jpg' へのアクセスが拒否されました。」(System.UnauthorizedAccessException)

System.UnauthorizedAccessException がスローされました: 「パス 'C:\Users\Admin\AppData\Local\Temp\Temp1_Wallpapers.zip\Wallpaper1.jpg' へのアクセスが拒否されました。」

これは、パスの解釈方法に問題がある可能性があると考えました。真ん中にが.zipあるので、これが問題かもしれませんが、それを解決する方法がわかりません。

また、そのパスにあるファイルを (圧縮されたフォルダー エクスプローラー ウィンドウではなく) 直接開くだけでも、同じ例外が発生します。

4

3 に答える 3

1

.ピリオドはファイル名とディレクトリ名で有効であるため、この問題は一時ファイル パスとは関係ありません。

ご想像のとおり、シェルで Zip フォルダーを開いてファイルを開くと、内容が一時フォルダー (通常のフォルダー) に自動的に抽出されます。ここで奇妙に見える唯一のことは、管理者の一時フォルダーを開いていることです。通常のユーザーとしてexeを実行していますか?exe とシェルが別のユーザーで実行されている場合、exe はシェルが使用する一時フォルダーにアクセスできない場合があります。

于 2013-08-10T23:34:35.487 に答える