-3

configFilePath = @"C:\Users\" + ユーザー名 + @"\abc\abc.exe.config";
if(File.Exists(configFilePath))
{
StreamReader fileReader = new StreamReader(configFilePath);
}

上記の行は、「パスの一部が見つかりませんでした」という例外をスローします。このエラーは、特定のマシンで発生します。他のすべてのマシンでは正常に動作します。そして、そのマシンでも、以前は同じコードが機能していました。マシンに変更はありません。この問題が議論されたすべてのフォーラムを読みました。しかし、なぜこれがそのマシンだけで発生するのか、そしてそれも今では理解できませんでした. フォルダーとファイルにアクセスする権限があること。

4

2 に答える 2

5

まず、パスの文字列連結ではなくPath.Combine()を使用します。ただし、ユーザー名には一重引用符など、パスに使用できない文字が含まれている可能性があるため、エスケープされている可能性があります。"C:\Users" がユーザーのディレクトリであり、独自のフォルダー構造ではないと仮定すると、Environment.GetFolderPath()メソッドをSpecialFolders列挙のUserProfile値で使用して、そのユーザーのユーザー プロファイル フォルダーを検索することをお勧めします。

于 2012-09-03T05:15:12.383 に答える
0

他に考慮すべきことは、ファイル/フォルダーのアクセス許可です。Windows Updateが原因で、フォルダのセキュリティが突然機能しなくなるという問題が発生しました。

于 2012-09-03T05:25:46.310 に答える