Изменить:
Другие опубликовали более красноречивые решения, такие как Yuriy-Guts ...
Process.Start("cmd.exe", @"/k ""cd /d C:\""");
(Как это работает:
http://www.microsoft.com/resources/documentation/windows/xp/all/proddocs/en-us/cmd.mspx?mfr=true
... '/ k' является частью команды после выполнения, которая сохраняет приглашение cmd открытым после изменения каталога.)
... если ваша единственная цель - запустить командную строку, но я предлагаю включить их в обработку ошибок, например ....
try
{
Process.Start("cmd.exe", @"/k ""cd /d C:\""");
}
catch(Exception e)
{
//Just in case...
Console.WriteLine(e.ToString());
string[] str=Directory.GetLogicalDrives();
Console.WriteLine( "Using C# Directory Class ,Available drives are:");
for(int i=0;i< str.Length;i++)
Console.WriteLine(str[i]);
//If fatal
//Environment.Exit(1)
}
Кроме того, если вы занимаетесь другими вещами в C: / Я считаю, что приведенное ниже решение является наиболее прозрачным.
Краткий ответ:
Ваша IDE автоматически выводит вас в каталог отладки, потому что это путь, который запрограммирован для размещения вашего исполняемого файла. Точкой ссылки вашего исполняемого файла на системные объекты является папка, в которой он находится. Вам нужно будет использовать абсолютное индексирование, чтобы добраться до корневого каталога C:
, в который вы хотите перейти.
Длинный ответ с кодом, Самопомощь
Попробуйте сначала Google, для основ:
https://www.google.com/search?q=change+directory+c%23
Первый результат:
http://www.c -sharpcorner.com / UploadFile / chandrahundigam / WorkingWithDirectory07022005012852AM / WorkingWithDirectory.aspx
(он плохо отформатирован, но содержит хороший контент.)
Перефразировать:
Добавить к своему коду:
using System;
using System.IO;
using System.MarshalByRefObject;
class DoStuff
{
char driveLetter;
...
void Initialize()
{
try
{
Directory.SetCurrentDirectory( string(driveLetter)+string(@":\");
}
catch(FileNotFoundException e)
{
//Just in case...
Console.WriteLine(e.ToString());
string[] str=Directory.GetLogicalDrives();
Console.WriteLine( "Using C# Directory Class ,Available drives are:");
for(int i=0;i< str.Length;i++)
Console.WriteLine(str[i]);
//If fatal
//Environment.Exit(1)
}
Process.Start("cmd.exe");
//Do whatever else you need to do in C:/ ...
}
Заметьте, я новичок в C # и явно не знал, как это сделать, но выяснить это было относительно тривиально. Эксперты по C # могут поправить меня, если в моем подходе есть недостатки.