私はおそらく盲目ですが、これには困惑しています。次の単体テストは、System.UnauthorizedAccessException でローカル マシン (ビルド サーバーではなく) で失敗します。
[TestMethod()]
public void UserPreferences_LocalApplicationDataPath_PathAlwaysExists()
{
//setup: get the proposed path and then delete the bottom folder and any existing files
string logPath = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
string actual = System.IO.Path.Combine(logPath, @"Autoscribe\Matrix\Gemini");
//if the folder is there, first delete it
if (Directory.Exists(actual))
{
//log some information about what is going on
Console.WriteLine("Attempting to delete " + actual + " as user " + Environment.UserName);
Directory.Delete(actual, true); // <-THROWS EXCEPTION HERE
Console.WriteLine("Deleted");
}
//action
actual = UserPreferencesManager.LocalApplicationDataPath;
//assert that getting the path forces it to be created.
Assert.IsTrue(Directory.Exists(actual));
}
報告された Environment.UserName 値は、ローカルの AppData フォルダーを「所有」する Windows ユーザーです。フォルダを削除できないのはなぜですか? 奇妙なことに、テストが実行されるすべてのマシン (すべての Windows 7) でこの問題が発生するわけではありません。