我可以通过我的代码获得网络驱动器的UNC路径吗?

时间:2017-11-24 06:50:55

标签: c# angularjs path unc network-drive

我制作了一台服务器,很多用户正在访问它。

现在我想为每个用户获取映射驱动器的Unc路径,这当然会有所不同。

实际上我需要完整的路径来访问我的c#代码中的那些文件。

从用户那里获取完整路径不是一个选项,因为他们不是开发人员。 我想做的是......如果有人给我Q:,那么我应该得到像\\server1\foo这样的绝对路径。我已经搜索但无法为此获得解决方案。

有没有办法做到这一点?

在C#(后端)或angularjs(前端)中

this_link我了解到,我无法通过使用javascript上传它来获得完整路径,因为出于安全考虑,浏览器不允许这样做。

我可以提供有关此问题的更多详情吗?

1 个答案:

答案 0 :(得分:0)

使用WMI检查网络路径。您可以在C#中使用ManagementClass对象。我们可以从Win32_LogicalDisk获取此信息,您会对名称 ProviderName 属性感兴趣。

select * from win32_LogicalDisk where driveType = 4

instance of Win32_LogicalDisk
{
    Access = 0;
    Caption = "Z:";
    Compressed = FALSE;
    CreationClassName = "Win32_LogicalDisk";
    Description = "Network Connection";
    DeviceID = "Z:";
    DriveType = 4;
    FileSystem = "NTFS";
    FreeSpace = "1805758038016";
    MaximumComponentLength = 255;
    MediaType = 0;
    Name = "Z:";
    ProviderName = "\\\\<server>\\<path>";
    Size = "2000396742656";
    SupportsDiskQuotas = FALSE;
    SupportsFileBasedCompression = TRUE;
    SystemCreationClassName = "Win32_ComputerSystem";
    SystemName = "<server>";
    VolumeName = "New Volume";
    VolumeSerialNumber = "<id>";
};

编辑:我们必须使用\\<server>\root\cimv2进行连接才能从远程计算机获取共享信息。感谢Alex指出这一点。