我正在制作一个应用程序加载器,它允许你拥有你想要保存的任意数量的应用程序,例如你想要使用谷歌浏览器,你按下“添加应用程序”,然后你得到一个OpenFileDialog来选择Chrome或您想要的任何其他应用程序/程序。程序然后将路径和名称保存在.bin文件中,并在单击按钮时加载它。它成功加载网站但不加载应用程序,我认为原因是该程序将文件路径保存为
C:\ Program Files(x86)\ Google \ Chrome \ Application \ chrome.exe
而不是
C:/ Program Files(x86)/Google/Chrome/Application/chrome.exe
至少这就是我的想法。无论如何这里是“保存”和“加载”的代码:
保存:
if (metroTextBox1.Text == "" || metroTextBox2.Text == "")
{
MessageBox.Show("You have to fill in both Name and Path first", "Invalid Info", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
else
{
string[] name = { metroTextBox1.Text };
string[] path = { metroTextBox2.Text };
System.IO.File.WriteAllLines(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/appLoader/apps/appname1.bin", name);
System.IO.File.WriteAllLines(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/appLoader/apps/apppath1.bin", path);
}
负载:
try
{
string path = System.IO.File.ReadAllText(System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) + "/appLoader/apps/apppath1.bin");
Process.Start(path);
}
catch
{
}
答案 0 :(得分:1)
Process.Start()
可以处理两者,您不必转换任何斜杠或反斜杠。像这样的启动过程应该可以正常工作。
要查找错误,请检查文件是否存在(File.Exists(path)
),是否可以直接在Windows中运行,当然(最重要的是)不要像您一样捕获异常但是包括抛出的异常,如下:
catch (Exception ex) // <-- !!
{
// investigate (and log) the exception here.
// note that catching all exceptions is not a good idea so narrow
// it down once you found the exceptions you have to care for.
}
可能该文件根本不存在或无法在没有having a working path set的情况下运行(对于某些应用程序,这可能是必需的)。