C# 不使用WMI查询分区的卷序列号的最佳方法是什么?

C# 不使用WMI查询分区的卷序列号的最佳方法是什么?,c#,.net,wmi,disk-partitioning,C#,.net,Wmi,Disk Partitioning,我们有一个服务(以系统用户身份运行),它使用WMI获取安装Windows的驱动器的卷序列号。但是,我们有一个客户端,它的WMI安全性太严格,我们无法用这种方式查询卷序列号 我不想了解WMI安全权限的细节,而是想使用本机Win32函数来获取此信息。但是,我不知道这个调用是否使用WMI从驱动器获取此信息,或者它是否只使用在注册表(或其他易于访问的位置)中设置的内容,普通用户可以在其中更改它(我知道,如果您真的知道如何更改,卷序列仍然可以更改) GetVolumeInformation是绕过WMI的可

我们有一个服务(以系统用户身份运行),它使用WMI获取安装Windows的驱动器的卷序列号。但是,我们有一个客户端,它的WMI安全性太严格,我们无法用这种方式查询卷序列号

我不想了解WMI安全权限的细节,而是想使用本机Win32函数来获取此信息。但是,我不知道这个调用是否使用WMI从驱动器获取此信息,或者它是否只使用在注册表(或其他易于访问的位置)中设置的内容,普通用户可以在其中更改它(我知道,如果您真的知道如何更改,卷序列仍然可以更改)


GetVolumeInformation是绕过WMI的可行解决方法吗?如果不是,在C#中获取此信息而不使用WMI调用的最佳方法是什么?

我咬紧牙关,最后只是调用Win32 API获取VolumeInformation(问题中的链接)。使用此函数检索卷序列时,如果需要与“vol”命令在命令提示符中显示的值相同的值,则必须记住将十进制数转换为十六进制数