2009-07-02 4 views
3

Я использовал два GUID для открытия папок Мой компьютер и Мои документы.Как открыть папки «Мои документы» и «Мой компьютер» с C#?

Process.Start("iexplore.exe", "::{20d04fe0-3aea-1069-a2d8-08002b30309d}"); 
Process.Start("iexplore.exe", "::{450d8fba-ad25-11d0-98a8-0800361b1103}"); 

Но он открывает Internet Explorer, а затем открывает папки Мой компьютер и Мои документы.

+4

Вы должны обернуть это руководство в consts со значимыми именами. Это может сэкономить много времени для вас и/или ваших коллег. – arbiter

+0

благодарим вас за комментарий –

+1

@arbiter, это очень хорошее предложение, это сделало бы его более дружественным для любых разработчиков, поддерживающих код. –

ответ

5

еще лучше было бы, чтобы пропустить explorer целиком и просто "начать" с GUIDs непосредственно:

Process.Start("::{20d04fe0-3aea-1069-a2d8-08002b30309d}");. ..

+4

hard-core! Это обеспечит массу удовольствия для младшего разработчика, которому потребуется отладка через этот вид кода через 5 лет :) – SWeko

+1

@SWeko меня огорчает, что этот ответ получил прием –

6

Try explorer.exe:

Process.Start("explorer.exe", "::{20d04fe0-3aea-1069-a2d8-08002b30309d}"); 
Process.Start("explorer.exe", "::{450d8fba-ad25-11d0-98a8-0800361b1103}"); 
9

Вы пробовали:

Process.Start("explorer.exe", "::{20d04fe0-3aea-1069-a2d8-08002b30309d}"); 
Process.Start("explorer.exe", "::{450d8fba-ad25-11d0-98a8-0800361b1103}"); 

?

+0

thank u работал для меня –

+1

Да, iexplorer.exe действительно Internet Explorer, в то время как explorer.exe - это Проводник. – Emmanuel

35

Использование этих жестко закодированных значений Guid не похоже на лучший способ достижения этого.

Вы можете использовать функцию Environment.GetFolderPath, чтобы получить путь к любой из специальных системных папок. Он принимает перечисление Environment.SpecialFolder.

Этот способ был бы более надежным, потому что у вас не было бы «волшебных» жестко заданных значений.

Вот как вы бы использовать:

//get the folder paths 
string myComputerPath = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); 
string myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); 
//open explorer and point it at the paths 
System.Diagnostics.Process.Start("explorer", myComputerPath); 
System.Diagnostics.Process.Start("explorer", myDocumentsPath); 

Важное примечание для Windows 7, пользователи

Это кажется, что попытка использовать этот код, чтобы открыть Мой компьютер на Windows 7 неправильно результаты в Вместо этого открывается папка библиотек. Это связано с тем, что по умолчанию поведение запуска проводника с пустым путём изменилось в Windows 7.

Я зарегистрировал следующий отчет об ошибках при подключении, перейдите и дайте ему верхнюю часть, если вы считаете, что это важно!

https://connect.microsoft.com/VisualStudio/feedback/details/757291/environment-getfolderpath-not-working-correctly-in-windows-7#details

(Благодаря JeremyK в комментариях указывают на это)

+1

Это также выглядит гораздо читабельнее, чем принятый ответ –

+0

Как открыть recyclebin –

+0

Если я попробую это сделать в Windows 7, он не откроет Мой компьютер, а не папку библиотеки, которая не предназначена – JeremyK

2

Это не работает для моей Vista:

string myComputerPath = Environment.GetFolderPath(Environment.SpecialFolder.MyComputer); 
System.Diagnostics.Process.Start("explorer", myComputerPath); 

как Environment.SpecialFolder.MyComputer возвращает "" и Process.Start ("explorer", "") открывает Мои документы.

GUID, кажется, сделать это, хотя:

Process.Start("explorer.exe", "::{20d04fe0-3aea-1069-a2d8-08002b30309d}"); 
-1

Samdoss

Просто введите

System.Diagnostics.Process.Start(directoryPath); 

Его очень легко. Попробуй это.

+0

Немного больше объяснений было бы неплохо .. , – poplitea

1
System.Diagnostics.Process.Start("..."); 

Я знаю, что это выглядит сомнительно, но просто запустите его. Это сработает. Это код для моего компьютера. Я не знаю, что это должно быть для Мои документы.

0

System.Diagnostics.Process.Start("...");

Я знаю, это выглядит сомнительно, а просто запустить его. Это сработает. Это код для моего компьютера. Я не знаю, что должно быть для моих документов.

В Windows 7 это приведет к открытию папки, из которой выполняется ваш исполняемый файл, то есть «текущая» папка.

0

мне пришлось открыть MyDocuments и на основе комментариев выше, я сузил решение, чтобы открыть проводник без побочных эффектов:

Process.Start("::{450d8fba-ad25-11d0-98a8-0800361b1103}"); 

Я тестировал на Windows Server 2008 R2.