OpenFileDialog возвращает пустую строку по путям длиной более 260 символов (или не возвращает вообще) - PullRequest
3 голосов
/ 06 ноября 2019

Я пишу программу, которая должна читать файлы из любой точки системы. Некоторые пользователи программы имеют пути свыше 260 символов. OpenFileDialog не работает с файлами с путями длиной более 260 символов.

Я пробовал использовать как System.Windows.Forms.OpenFileDialog, так и Microsoft.Win32.OpenFileDialog. В первом случае, когда я нажимаю «открыть» после перехода к файлу и его выбора, окно не закрывается и программа не продолжается. В последнем случае окно закроется, когда я нажму «открыть», но путь будет пустой строкой.

Я обновил реестр на моем компьютере. Я отредактировал файл манифеста приложения. Я попытался бы добавить строку "//? /" К моим путям, но нет никаких путей к ним.

var dialog = new OpenFileDialog
{
  // initialize dialog
}

if (dialog.ShowDialog() == DialogResult.OK) // DialogResult.OK replaced with true if using Microsoft.Win32.OpenFileDialog
{
  // if when using System.Windows.Forms.OpenFileDialog, I will never get to this point
  // if using Microsoft.Win32.OpenFileDialog, I will get here but dialog.FileNames will be empty
}

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

...