I am writing a c# app that needs to be able to be ran from a usb, and it launches other programs that are installed to the usb. Not necessarily the computer it's being ran on. I am launching these applications by doing:
Process.Start("notmyprogram.exe");
this works great however I am finding that this only works if notmyprogram.exe.
is installed to the computers hard drive. If I want to run a program not installed on the computer, but rather to the usb, I have to call it directly, like so:
Process.Start("D:\\Programs\\notmyprogram\\applicationinstalledonusb.exe");
Where D:
is the letter assigned by my OS. However, obviously the drive letter changes per computer, it wont always be D. MY application is located on the usb so my question is: is there any way to find what drive letter my exe is ran from so I could then append the directory to the end of the drive letter? Or maybe I'm simply going about it the wrong way and there's a more efficient way to accomplish this?
Try this (using System.IO):
string root = Path.GetPathRoot(System.Reflection.Assembly.GetEntryAssembly().Location);
Also, You can use Path.GetFullPath() instead Path.GetPathRoot()
and remove unwanted part from the string without hardcoding the folder name
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With