微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如果路径长度大于 256,C# OpenFileDialog 不会返回正确的路径

如何解决如果路径长度大于 256,C# OpenFileDialog 不会返回正确的路径

我正在编写一些小应用程序。应用程序将根据某些选择更改一些文件名。要打开文件,我使用 Microsoft.Win32.OpenFileDialog。现在,当我想打开一个路径超过 256 个字符(我认为这就是数字)的文件时,路径会被截断。 例如,我有以下代码来打开文件

OpenFileDialog openFileDialog = new OpenFileDialog();
openFileDialog.Multiselect = false;
openFileDialog.ValidateNames = false;

if (true == openFileDialog.ShowDialog())
{
    //Working with the returned path
}

然后当我想打开这样的文件时:C:/a/very/long/file/path/with/more/than/256/characters.txt,我退出对话框的路径是这样的:C:/a/very/long/file/path/with/more/than/256/CHaraC~1.TXT 文件名的长度为 230 个字符。

我该如何解决这个问题?

感谢您的帮助。

解决方法

如评论中所述,这里是 Peregrine 链接的摘要。

  1. 创建一个新的 .reg 文件。
  2. 将以下内容复制到文件中:
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\FileSystem]
"LongPathsEnabled"=dword:00000001
  1. 保存文件并执行。
  2. 右键单击您的项目并添加一个新的清单文件(如果尚不存在)。
  3. 打开 app.manifest 文件并添加以下内容:
<application xmlns="urn:schemas-microsoft-com:asm.v3">
    <windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
        <ws2:longPathAware>true</ws2:longPathAware>
    </windowsSettings>
</application>

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。