次のコードを使用して、「スタートメニュー」フォルダーを介して再帰ループを実行しようとしています:
Function(string pathFolder) {
Shell32.Shell shell = new Shell32.Shell();
Shell32.Folder folderObj = shell.NameSpace(pathFolder);
foreach ( Shell32.FolderItem2 item in objFolder.Items() ) {
string typeItem = folderObj.GetDetailsOf(item, 2);
if ( typeItem == "File folder" ) {
string folderName = folderObj.GetDetailsOf(item, 0);
Function(pathFolder + "\\" + folderName);
} else {
// do smomething...
}
}
問題は、Shell.Namespace がすべてではなく一部のフォルダーで正常に機能することです。これらの機能していないフォルダーの場合、Shell.Namespace は、これらのフォルダーが存在する場合でも null を返します。
コードの何が問題になっていますか?