我找到了对日志中具有以下格式的文件的引用:
\\?\C:\Path\path\file.log
Run Code Online (Sandbox Code Playgroud)
我找不到对\?\表示顺序的引用.我相信反斜杠之间的部分是指主机名.
例如,在我的Windows计算机上,以下工作正常:
dir \\?\C:\
Run Code Online (Sandbox Code Playgroud)
而且,结果相同:
dir \\.\C:\
Run Code Online (Sandbox Code Playgroud)
问题:
使用C#或其他.NET语言确定文件路径字符串是在本地计算机还是远程服务器上的最佳方法是什么?
可以使用以下内容确定路径字符串是否为UNC:
new Uri(path).IsUnc
Run Code Online (Sandbox Code Playgroud)
这适用于以C:\或其他驱动器号开头的路径,但是路径如下:
\\machinename\sharename\directory
\\10.12.34.56\sharename\directory
Run Code Online (Sandbox Code Playgroud)
...两者都引用本地机器 - 这些是UNC路径但仍然是本地路径.
这似乎是一个愚蠢的问题,所以这里是:
除了解析驱动器号的FileInfo.FullPath字符串之外,然后使用DriveInfo("c")等来查看是否有足够的空间来写入此文件.有没有办法从FileInfo获取驱动器号?
检查路径是否为UNC路径的最简单方法当然是检查完整路径中的第一个字符是字母还是反斜杠.这是一个很好的解决方案还是会出现问题?
我的具体问题是,如果路径中有驱动器号,我想创建一个System.IO.DriveInfo对象.
在我的应用程序中,我有一个对话框,用户可以在其中选择数据库备份位置.
我想警告用户他/她选择的位置是"可能不安全".
我想考虑下列安全地点:
I:\Backup)或UNC表示法(\\server2\backup))如何获得有关所选文件夹的此类信息?
我知道这个DriveInfo类,但它只处理驱动器号,而不是UNC路径.