Почему текущий рабочий каталог изменяется при использовании диалогового окна «Открыть файл» в Windows XP? - PullRequest
18 голосов
/ 11 июня 2010

Я обнаружил странное поведение при использовании диалога открытия файла в c #.

Если использовать этот код в Windows XP, текущий рабочий каталог изменится на путь выбранного файла, однако, если вы запустите этот код в Windows 7, текущий рабочий каталог не изменится.*

Кто-нибудь знает причину такого поведения?Почему текущий каталог меняется в XP, а не в Windows 7?

Ответы [ 2 ]

16 голосов
/ 11 июня 2010

Судя по вашему описанию, значение по умолчанию для свойства RestoreDirectory отличается в XP и Windows7. Я не уверен, почему это так, но вы можете решить эту проблему, явно указав значение в своем коде. Установка его в true восстановит каталог при закрытии диалога.

10 голосов
/ 22 июня 2010

FileDialog (базовый класс OpenFileDialog) имеет свойство AutoUpgradeEnabled, которое определяет, использует ли диалоговое окно преимущества более новых файловых диалогов, которые были внедрены в Vista и более новых операционных системах, когда они доступны. (Внутренне это разница между вызовом GetOpenFileName в comdlg32 или использованием интерфейса IFileDialog).

Причина этого заключается в том, что более новые диалоги поддерживают ряд функций, таких как панель «мест» (см. Коллекцию CustomPlaces). Неожиданным побочным эффектом этого является то, что более новая реализация IFileDialog не меняет текущий каталог, тогда как более старая версия это делала.

Это ошибка в реализации диалогового окна файла, которая возникает независимо от значения свойства RestoreDirectory

Если вы не хотите использовать более новую функциональность диалогового окна файла, проще всего установить в AutoUpgradeEnabled значение false.

...