0

我正在使用代码显示列表框中的所有启动项,环境变量为“%appdata% 此代码中有一些错误,我需要帮助...。检查代码中的注释错误

是否有任何其他解决方案但仍在使用 %appdata%?

这是代码:

    private void readfiles()
    {
        String startfolder = Environment.ExpandEnvironmentVariables("%appdata%") + "\\Microsoft\\Windows\\Start Menu\\Programs\\Startup";
        foldertoread(startfolder);
    }

    private void foldertoread(string folderName)
    {
        FileInfo[] Files = folderName.GetFiles("*.txt"); // HERE is one error "Getfiles"
        foreach (var file in Directory.GetFiles(folderName))
        {
            startupinfo.Items.Add(file.Name); // here is another error "Name"

        }
    }
4

3 回答 3

2

此行不起作用,因为folderName它是一个字符串(并且没有GetFiles方法):

FileInfo[] Files = folderName.GetFiles("*.txt");

发生第二个错误是因为file变量是string包含文件名的。您无需致电file.Name,只需尝试以下操作:

startupinfo.Items.Add(file);
于 2013-04-10T19:31:16.463 回答
0

我认为您不需要以下行:

FileInfo[] Files = folderName.GetFiles("*.txt");

foreach循环将生成您需要的内容。其次,file变量是一个字符串,所以不要调用:

startupinfo.Items.Add(file.Name);

...改为:

startupinfo.Items.Add(file);

最后,您可以使用字符串代替循环的 var 类型,并且可以指定文件类型过滤器:

foreach (string fileName in Directory.GetFiles(folderName, "*.txt"))
于 2013-04-10T19:34:02.230 回答
0

string对象没有GetFiles()方法。试试这个:

string startfolder = Environment.GetFolderPath(Environment.SpecialFolder.Startup);

string[] files = Directory.GetFiles(startfolder, "*.txt");

foreach (string file in files)
{
   startupinfo.Items.Add(Path.GetFileNameWithoutExtension(file));
}

Path.GetFileNameWithoutExtension(file)只返回文件名而不是完整路径。

于 2013-04-10T19:35:44.053 回答