C# - Shell.Namespace(pathFolder)返回null,即使<pathfolder>存在</pathfolder>

时间:2013-03-20 15:55:05

标签: c# windows recursion filesystems shell32

我正在尝试使用以下代码在“开始菜单”文件夹中进行递归循环:

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。

我的代码出了什么问题?

1 个答案:

答案 0 :(得分:1)

为什么不使用System.IO命名空间类?我认为它有更先进的API。对于您的情况,它可能是安全问题。