![](/img/trans.png)
[英]C# Directory.GetCurrentDirectory() returning system32 with NUnit
[英]C# Directory.GetCurrentDirectory and drives other than C:
由于某些原因,当我的程序安装在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");
}
可能是因为您的程序位于另一个驱动器的根文件夹中,例如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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.