0

C# で File.Exists を使用すると、いくつかの PC で再現可能な奇妙な問題が発生します。.NET 4 ライブラリのエラーとして表示されます。

私は 7ZIP を使用して C# プログラムから自動化し、CreateProcess を呼び出してファイルを圧縮および解凍します。そのためには、PATH 変数に依存したくないので、7ZIP がインストールされているかどうか、およびどこにインストールされているかを調べる必要があります。

したがって、これはコードの一部です。

if (File.Exists(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\7-Zip\\7z.exe"))
    clsGlobal.gstr_ZIP_PROG_MIT_PFAD = "\"" + Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles) + "\\7-Zip\\7z.exe\"";

else if (File.Exists("\"C:\\Program Files (x86)\\7-Zip\\7z.exe\""))
    clsGlobal.gstr_ZIP_PROG_MIT_PFAD = "\"C:\\Program Files (x86)\\7-Zip\\7z.exe\"";

すべての Exist-Check で「false」が返されます。確かに、ProgramFiles-SpecialFolder は正しい (x86)-Folder を指しています。また、確かに、7ZIP は C:\Program Files (x86)\7-ZIP\7z.exe にインストールされており、CreateProcess を呼び出すと、すべて正常に動作します。すべての Exists() - チェックが失敗する理由は何ですか? これは既知のバグですか?

4

2 に答える 2