Откройте папку с помощью Process.Start

Я видел другую тему, и у меня другая проблема. Процесс запускается (отображается в диспетчере задач), но папка не открывается на моем экране. Что не так?

System.Diagnostics.Process.Start("explorer.exe", @"c:\teste"); 

Вы уверены, что существует папка « c:\teste »? Если это не так, откроется проводник, показывающий папку по умолчанию (в моем случае « C:\Users\[user name]\Documents »).

Обновить

Я пробовал следующие варианты:

 // opens the folder in explorer Process.Start(@"c:\temp"); // opens the folder in explorer Process.Start("explorer.exe", @"c:\temp"); // throws exception Process.Start(@"c:\does_not_exist"); // opens explorer, showing some other folder) Process.Start("explorer.exe", @"c:\does_not_exist"); 

Если ни один из них (ну, кроме того, который вызывает исключение) работает на вашем компьютере, я не думаю, что проблема заключается в коде, но в среде. Если это так, я попробую один (или оба) из следующего:

  • Откройте диалоговое окно «Запуск», введите «explorer.exe» и нажмите Enter.
  • Откройте командную строку, введите «explorer.exe» и нажмите Enter.

Просто для полноты, если все, что вы хотите сделать, это открыть папку, используйте это:

 System.Diagnostics.Process.Start(new System.Diagnostics.ProcessStartInfo() { FileName = "C:\\teste", UseShellExecute = true, Verb = "open" }); 

Это решение не будет работать для открытия папки и выбора элемента, поскольку для этого не существует глагола.

Если вы хотите выбрать файл или папку, вы можете использовать следующее:

 Process.Start("explorer.exe", "/select, c:\\teste"); 

Вы используете символ @, который устраняет необходимость экранирования обратных косых черт.

Удалите @ или замените \\ на \

Вам не нужна двойная обратная косая черта при использовании неэкранированных строк:

 System.Diagnostics.Process.Start("explorer.exe",@"c:\teste"); 

Вы должны использовать одну из перегрузок System.Diagnostics.Process.Start() . Это очень просто!

Если вы не укажете имя процесса, который вы хотите запустить ( explorer.exe ), система распознает его как допустимый путь к папке и попытается подключить его к уже запущенному процессу проводника. В этом случае, если папка уже открыта, Explorer ничего не сделает.

Если вы поместите имя файла процесса (как и вы), система попытается запустить новый экземпляр процесса, передав вторую строку в качестве параметра. Если строка является допустимой папкой, она открывается во вновь создаваемом процессе, если нет, новый процесс ничего не сделает.

Я не знаю, как в любом случае обрабатываются неверные пути к папкам. Использование System.IO.Directory.Exists() должно быть достаточным для обеспечения этого.

Используйте перегруженную версию метода, который принимает экземпляр ProcessStartInfo и устанавливает для свойства ProcessWindowStyle значение, которое работает для вас.

 System.Diagnostics.Process.Start("explorer.exe",@"c:\teste"); 

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

У меня просто была эта проблема, и я узнал, почему. моя причина не указана здесь, так что кто-то еще, кто получает эту проблему, и ни один из них не исправляет ее.

Если вы запустите Visual Studio в качестве другого пользователя и попытаетесь использовать Process.Start, он будет запущен в контексте пользователей, и вы не увидите его на экране.

Странный.

Если он не может найти explorer.exe, вы должны получить исключение. Если он не может найти папку, он все равно должен открыть некоторую папку (например, мои документы)

Вы говорите, что в диспетчере задач появляется еще одна копия Explorer, но вы ее не видите.

Возможно ли, что он открывается за кадром (например, другой монитор)?

Или вы случайно делаете это в неинтерактивном сервисе?

Открывается ли он правильно, когда вы запускаете «explorer.exe c: \ teste» из меню «Пуск»? Как долго вы это пробовали? Я вижу подобное поведение, когда на моей машине много процессов и когда я открываю новый процесс (например, говорит IE) .. он запускается в диспетчере задач, но не отображается в интерфейсе. Вы пробовали перезапуск?

Следующий код должен открыть новый экземпляр explorer

 class sample{ static void Main() { System.Diagnostics.Process.Start("explorer.exe",@"c:\teste"); } } 

У вас много приложений, запущенных, когда вы пытаетесь это сделать? Иногда я сталкиваюсь с странным поведением, потому что в моей системе заканчиваются GDI Handles, так как у меня так много открытых окон (наши приложения используют много).

Когда это происходит, windows и контекстные меню не появляются, пока я не закрываю что-то, чтобы освободить некоторые дескрипторы GDI.

Предел по умолчанию в XP и Vista – 10000. Это не редкость для моего DevStudio иметь 1500 дескрипторов GDI, поэтому, если у вас есть несколько копий Dev-студии, они могут их съесть довольно быстро. Вы можете добавить столбец в TaskManager, чтобы узнать, сколько ручек используется каждым процессом.

Существует своя настройка реестра, которую вы можете сделать, чтобы увеличить лимит.

Для получения дополнительной информации см. http://msdn.microsoft.com/en-us/library/ms724291(VS.85).aspx

Вы избегаете обратной косой черты, когда знак «Знак» делает это для вас.

 System.Diagnostics.Process.Start("explorer.exe",@"c:\teste"); 

System.Diagnostics.Process.Start("explorer.exe",@"c:\teste");

Просто измените путь или объявите его в string

  • Как добавить элемент контекстного меню в проводник Windows для папок
  • Как отключить функцию пользовательского интерфейса отслеживания в Windows 8?
  • Две синие стрелки в правом верхнем углу значков
  • Unlocker howto ?! Ничего не делает
  • Как измерить общее использование ОЗУ в программе под Windows?
  • Заменить «Paint» в качестве программы по умолчанию для команды «Изменить» проводника
  • Стабильная страница - MyStartSearch - mystartsearch.com
  • Измените действие контекстного меню Windows 7 «Редактировать» для jpg и других типов файлов изображений
  • Получение проводника Windows 7 для отображения окна поиска без включения поиска в Windows
  • Отключить перетаскивание (не удалять) в панели навигации проводника Windows
  • Интеграция в контекстное меню проводника Windows
  • Давайте будем гением компьютера.