1

次のコードを使用して、「スタートメニュー」フォルダーを介して再帰ループを実行しようとしています:

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 を返します。

コードの何が問題になっていますか?

4

1 に答える 1

1

System.IO 名前空間クラスを使用しないのはなぜですか? より高度な API を備えていると思います。あなたの場合、おそらくセキュリティの問題です。

于 2013-03-20T16:02:23.820 に答える