C# Directory.GetCurrentDirectory

C# Directory.GetCurrentDirectory,c#,C#,我写了一个程序,检查它是否在一个特定的文件夹中; 如果没有,它会将自身复制到该文件夹中,运行复制的程序并退出。 但问题是我打电话的时候 Directory.GetCurrentDirectory() 在复制的程序中(仅当它由第一个程序运行时),我得到的是第一个程序的目录,而不是复制的程序的目录。 这里有什么问题 守则: if(Directory.GetCurrentDirectory()!=dir) { File.Copy(Application.ExecutablePath,dir

我写了一个程序,检查它是否在一个特定的文件夹中; 如果没有,它会将自身复制到该文件夹中,运行复制的程序并退出。 但问题是我打电话的时候
Directory.GetCurrentDirectory()
在复制的程序中(仅当它由第一个程序运行时),我得到的是第一个程序的目录,而不是复制的程序的目录。
这里有什么问题

守则:

if(Directory.GetCurrentDirectory()!=dir)
{
      File.Copy(Application.ExecutablePath,dir+name);
      System.Diagnostics.Process.Start(dir+@"\"+name);
      System.Environment.Exit(System.Environment.ExitCode);
}

我总结了我的代码。

您必须使用processinfo上的WorkingDirectory,无需复制文件

if(Directory.GetCurrentDirectory()!=dir)
{
  string exepath = Path.Combine(dir,name);
  ProcessStartInfo processStartInfo = new ProcessStartInfo();
  process.StartInfo.FileName = exepath;
  processStartInfo.WorkingDirectory = dir;

  //Set your other process info properties

  Process process = Process.Start(processStartInfo);
  System.Environment.Exit(System.Environment.ExitCode);
}

你的处境很复杂。您确定
正确的
程序获得了错误的文件夹吗?瞧,你确定是复制的程序吗?“这里有什么问题?”除了一个时髦的设计,代码坚持在特定的目录中运行之外?你为什么要这么做?这就像是键盘记录器。我需要它在一个特定的文件夹。例如,在c:\\中,将其作为windows文件。为什么要将其放在该文件夹中?UAC可能会阻止您将文件移动到那里。有很好的理由。你想完成什么?我想让我的程序看起来像一个windows基本文件。像文件系统等。所以它应该在驱动器C中。请注意,只有第一个程序第一次运行它时,我有这个问题,但它不工作。我的程序窗口因错误消息而冻结。然后给我们错误消息,我们只能猜测哪个没有多大帮助。它说程序无法继续,并要求关闭或调试它。注意:这不是visual studio的错误。它来自windows。向我们显示代码和错误消息,只有这样我们才能帮助您。