将网络共享路径转换为物理文件夹路径
Convert Network share path to a physical folder path
我有一个使用 FileSystemWatcher 监视文件夹的控制台应用程序,它会在 file/folder 被删除时触发一个事件。
我的简化代码:
using System;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
namespace FileWatcherConsole
{
class Program
{
static void Main(string[] args)
{
Program program = new Program();
FileSystemWatcher watcher = new FileSystemWatcher
{
Path = "\Server1",
IncludeSubdirectories = true,
EnableRaisingEvents = true,
NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName,
Filter = "*.*"
};
watcher.Deleted += new FileSystemEventHandler(program.OnDeleted);
new AutoResetEvent(false).WaitOne();
}
private void OnDeleted(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.FullPath);
}
}
}
该应用程序按预期工作,但在观看输出为
的网络共享文件夹时除外
\Server1\SharedFolder
不过我更喜欢文件夹的物理路径:
C:\Users\myUser\Desktop\SharedFolder
那么有没有办法以编程方式将网络路径转换为物理路径?
我知道一种解决方案是在实例化 FileSystemWatcher 时使用物理路径,但这并不理想,因为网络共享文件夹的物理位置可能会发生变化。
P.S。如果您认为这背后的原因有必要,我需要物理路径,因为我正在比较事件路径 [e.FullPath] 与系统审计事件
使用 System.Management
命名空间中的 ManagementObjectSearcher
您可以查询远程服务器以获取 WMI 中共享的 Win32_Share
定义并构建相应的本地路径。
文章 Get local path from UNC path 中有详细说明如何执行此操作的示例代码。
我有一个使用 FileSystemWatcher 监视文件夹的控制台应用程序,它会在 file/folder 被删除时触发一个事件。
我的简化代码:
using System;
using System.Configuration;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
using System.Threading;
namespace FileWatcherConsole
{
class Program
{
static void Main(string[] args)
{
Program program = new Program();
FileSystemWatcher watcher = new FileSystemWatcher
{
Path = "\Server1",
IncludeSubdirectories = true,
EnableRaisingEvents = true,
NotifyFilter = NotifyFilters.LastWrite | NotifyFilters.FileName | NotifyFilters.DirectoryName,
Filter = "*.*"
};
watcher.Deleted += new FileSystemEventHandler(program.OnDeleted);
new AutoResetEvent(false).WaitOne();
}
private void OnDeleted(object sender, FileSystemEventArgs e)
{
Console.WriteLine(e.FullPath);
}
}
}
该应用程序按预期工作,但在观看输出为
的网络共享文件夹时除外\Server1\SharedFolder
不过我更喜欢文件夹的物理路径:
C:\Users\myUser\Desktop\SharedFolder
那么有没有办法以编程方式将网络路径转换为物理路径?
我知道一种解决方案是在实例化 FileSystemWatcher 时使用物理路径,但这并不理想,因为网络共享文件夹的物理位置可能会发生变化。
P.S。如果您认为这背后的原因有必要,我需要物理路径,因为我正在比较事件路径 [e.FullPath] 与系统审计事件
使用 System.Management
命名空间中的 ManagementObjectSearcher
您可以查询远程服务器以获取 WMI 中共享的 Win32_Share
定义并构建相应的本地路径。
文章 Get local path from UNC path 中有详细说明如何执行此操作的示例代码。