我正在使用代码在列表框中显示环境变量“%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"
}
}
答案 0 :(得分:2)
此行不起作用,因为folderName
是一个字符串(并且没有GetFiles
方法):
FileInfo[] Files = folderName.GetFiles("*.txt");
发生第二个错误,因为file
变量是包含文件名的string
。您无需致电file.Name
,只需尝试以下操作:
startupinfo.Items.Add(file);
答案 1 :(得分: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"))
答案 2 :(得分: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)
只返回文件名而不是完整路径。