Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果我不一定知道文件夹的结构,但只知道目的地,如何循环遍历文件夹?_C#_Search_Recursion_Directory - Fatal编程技术网

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的链接:

原始程序不是我设计的,这是问题的核心。但是是的,我肯定会这么做。我表示同情。那么,执行递归搜索可能是您唯一的选择。可选:作为最后的手段,让用户指出安装位置。