私はスタートメニューの項目を繰り返し処理しようとしていますが、UnauthorizedAccessExceptionを受け取り続けます。私はディレクトリの所有者で、私のユーザーは管理者です。ここで自分自身のディレクトリ内のUnauthorizedAccessException
は、私の方法は、(それがDLLプロジェクトにあります)です:それはサブディレクトリを反復するために開始したときに
// root = C:\Users\Fernando\AppData\Roaming\Microsoft\Windows\Start Menu
private void walkDirectoryTree(DirectoryInfo root) {
try {
FileInfo[] files = root.GetFiles("*.*");
foreach (FileInfo file in files) {
records.Add(new Record {Path = file.FullName});
}
DirectoryInfo[] subDirectories = root.GetDirectories();
foreach (DirectoryInfo subDirectory in subDirectories) {
walkDirectoryTree(subDirectory);
}
} catch (UnauthorizedAccessException e) {
// do some logging stuff
throw; //for debugging
}
}
コードは失敗します。他に何をすべきですか?すでにマニフェストファイルを作成しようとしましたが、動作しませんでした。 別のポイント(該当する場合):Visual Studio(管理者として実行)で単体テストを実行しています。
例外を回避するには、拡張メソッドを使用するのが良い方法でした。私のスタートメニューに "見つからない"エントリを取得するには、レジストリキー 'HKLM¥Software¥Microsoft¥Windows¥CurrentVersion¥Explorer¥Shell¥Folders¥Common Start Menu'をポイントしたパスに従っています。 – Fernando