C# 如果我不一定知道文件夹的结构,但只知道目的地,如何循环遍历文件夹?
我正在编写一个程序,需要访问C# 如果我不一定知道文件夹的结构,但只知道目的地,如何循环遍历文件夹?,c#,search,recursion,directory,C#,Search,Recursion,Directory,我正在编写一个程序,需要访问c:\program files\program\u name\中的一个文件 我的目标文件将始终位于\program\u name\program\u name\bin\something.exe 但是,由于该程序是从存档中提取的,如果用户不正确地将其解压,它将只是\program\u name\bin\something.exe,跳过整个级别 目前我基本上是获取c:\program files\的内容,收集包含program\u name的所有文件夹的名称,然后将它
c:\program files\program\u name\
中的一个文件
我的目标文件将始终位于\program\u name\program\u name\bin\something.exe
但是,由于该程序是从存档中提取的,如果用户不正确地将其解压,它将只是\program\u name\bin\something.exe
,跳过整个级别
目前我基本上是获取c:\program files\
的内容,收集包含program\u name
的所有文件夹的名称,然后将它们添加到列表中,然后使用列表循环遍历其中的每一个文件夹,查看其中是否有program\u name
,等等,这最终会让我得到结果
基本上,我正在为每种可能性创建大量代码。有没有更聪明的方法来实现这一点?听起来您可以从安装程序写入注册表中获益。然后你就会知道所有文件和文件夹都在哪里,即使用户安装到了一个奇怪的位置。要扩展Charlie所说的内容,你可以用某种统一的安装程序类型的东西包装原始应用程序,它将写入注册表并将应用程序解压缩到用户决定的任何位置。安装程序将提示用户安装到的位置,并将解压缩到该位置。InnoSetup可以配置为写入卸载信息、放置卸载链接等。您可以自定义InnoSetup脚本的卸载程序部分,以执行所需的任何清理,和/或调用其他外部程序(如有必要) InnoSetup允许您在实际的安装程序exe中打包内容,因此您只需分发一个flle。我可以验证这是否有效——尽管我从未尝试过将其用于打包大型文件
以下是InnoSetup的链接:原始程序不是我设计的,这是问题的核心。但是是的,我肯定会这么做。我表示同情。那么,执行递归搜索可能是您唯一的选择。可选:作为最后的手段,让用户指出安装位置。