私は、以前の何人かと同じように、最大パス長の制限に混乱しています。robocopy と新しい Windows 10 マシンを使用して、ファイルのツリーを NAS に正常に転送しました。
ソース マシンでは、すべてのファイルが 260 文字の制限内でした。これらは、robocopy を使用して、パス e: からパス \nas-3tb-backup\Public\Save_2019 にコピーされました。その後、小さな C# プログラムで確認したかったのですが、うまくいきません。FileInfo と File.OpenRead の両方が、NAS 名による拡張パスを持つファイルを見つけることができません。メモ帳、Visual Studio Code、Windows エクスプローラーなどのすべてのプログラムで、このファイルを問題なく表示または開くことができます。ここに示されているプレフィックス \\?\ を使用しようとしました: https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file?redirectedfrom=MSDN#maxpathしかし、\\?\\\nas-3tb-backup---- の試行は失敗しました。リンクされた記事には、レジストリが変更されたときにパスを拡張するためのヒントがまだあります。これを回避したいのは、すべての Windows コンピューターを変更する必要があり、Windows 自体のプログラムがレジストリのハッキングなしで動作するため、可能であるはずだからです。
string fn1 = @"\\?\\\nas-3tb-backup\Public\VeryLongPathToFile";
bool b1 = new FileInfo(fn1).Exists;
if (b1) {
using (FileStream stream = File.OpenRead(fn1)) {
var b = stream.ReadByte();
}
}