由于某种原因,当我的程序安装在C:\以外的驱动器上时,下面的代码(c#.net 2.0)无法找到并运行program2.exe。我在这里做错了吗?
try
{
System.Diagnostics.Process proc = new System.Diagnostics.Process();
proc.StartInfo.FileName = Directory.GetCurrentDirectory() +
"\\Folder\\program2.exe";
proc.Start();
}
catch
{
MessageBox.Show("Unable to locate program");
}
答案 0 :(得分:3)
可能是因为您的程序位于另一个驱动器的根文件夹中,例如R:\
,而非子目录,例如R:\Program
?
由于这种原因,在C#中使用文字反斜杠字符连接路径被认为是不好的做法。相反,您应该使用Path.Combine
:
proc.StartInfo.FileName = Path.Combine(
Directory.GetCurrentDirectory(),
"Folder",
"program2.exe"
);
此外,Directory.GetCurrentDirectory()
可能不指向您认为的目录。通常,这可能会返回系统上的任何目录,并且与程序所在或启动的位置无关。因此,我建议使用其中之一:
Application.ExecutablePath
Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location)