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() - チェックが失敗する理由は何ですか? これは既知のバグですか?