程序/应用程序加载器C#
问题描述:
即时制作一个应用程序加载器,它可以让你有尽可能多的应用程序,你想保存在其中,例如说你想要谷歌浏览器,你按“添加应用程序”,你会得到一个OpenFileDialog来选择Chrome或任何其他应用程序/你想要的程序。该程序然后将路径和名称保存在.bin文件中,并在单击该按钮时加载它。它成功地加载网站,但不应用,为此,我认为原因是,该方案将文件保存路径,程序/应用程序加载器C#
C:\ Program Files文件(x86)的\谷歌\镀铬\应用\的chrome.exe
的
代替
C:/程序文件(x86)/Google/Chrome/Application/chrome.exe
至少这就是WHA我想。反正这里是为“保存”和“负荷”的代码:
节省:
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
{
}
答
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运行(这可能是强制性的一些应用)。
如果你认为那是因为做path.Replace(“/”,“\\”); – pm100
查看'Path'类。 https://msdn.microsoft.com/en-us/library/system.io.path(v=vs.110).aspx –
反斜杠和前斜杠,两者都适用于'Process.Start' – Vikhram