C# 通过共享路径获取HDD串行数据
我有一个C#win表单应用程序。在其中,我得到了一个独特的系列硬盘驱动器使用这种方法C# 通过共享路径获取HDD串行数据,c#,kernel32,shared-directory,C#,Kernel32,Shared Directory,我有一个C#win表单应用程序。在其中,我得到了一个独特的系列硬盘驱动器使用这种方法 [DllImport("kernel32.dll", CharSet = CharSet.Auto)] public static extern bool GetVolumeInformation(string Volume, StringBuilder VolumeName, uint VolumeNameSize, out uint SerialNumber, uin
[DllImport("kernel32.dll", CharSet = CharSet.Auto)]
public static extern bool GetVolumeInformation(string Volume, StringBuilder VolumeName,
uint VolumeNameSize, out uint SerialNumber, uint SerialNumberLength,
uint flags, StringBuilder fs, uint fs_size);
卷变量为Path.GetPathRoot(Environment.CurrentDirectory)
我得到的序列号是SerialNumber.ToString(“X”)
工作很好,但情况很糟糕
EXE
00000000
XXXXXXXX
我提到了,但不符合我的需要。只是猜测,但我假设如果您使用UNC路径作为卷(类似“\\Server\Share\app.exe”),则这不起作用,因为共享实际上不是一个具有序列号的卷。如果映射它,它将成为驱动器号并获取序列号。本地运行时的序列号与使用映射路径运行时的序列号相同吗?@PMF是的,它是相同的..这让我有点吃惊,因为这意味着它不需要是唯一的。如果您在同一台计算机的不同共享中有多个映射,则会得到重复的序列。@PMF I将两个映射驱动器添加到同一文件夹。两人都给出了相同的序列号……好吧,这证实了我的假设。实际上,卷序列号不一定是唯一的。这可能是一个问题,也可能不是问题,这取决于您试图做什么。