创建虚拟硬盘

如何创建虚拟硬盘(如Z :),将其存储在物理硬盘上(如C:\ Files)。

这是直接执行此操作的C#代码:

 using System; using System.Text; using System.ComponentModel; using System.Runtime.InteropServices; static class Subst { public static void MapDrive(char letter, string path) { if (!DefineDosDevice(0, devName(letter), path)) throw new Win32Exception(); } public static void UnmapDrive(char letter) { if (!DefineDosDevice(2, devName(letter), null)) throw new Win32Exception(); } public static string GetDriveMapping(char letter) { var sb = new StringBuilder(259); if (QueryDosDevice(devName(letter), sb, sb.Capacity) == 0) { // Return empty string if the drive is not mapped int err = Marshal.GetLastWin32Error(); if (err == 2) return ""; throw new Win32Exception(); } return sb.ToString().Substring(4); } private static string devName(char letter) { return new string(char.ToUpper(letter), 1) + ":"; } [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern bool DefineDosDevice(int flags, string devname, string path); [DllImport("kernel32.dll", CharSet = CharSet.Auto, SetLastError = true)] private static extern int QueryDosDevice(string devname, StringBuilder buffer, int bufSize); } 

样品用法:

  Subst.MapDrive('z', @"c:\temp"); Console.WriteLine(Subst.GetDriveMapping('z')); Subst.UnmapDrive('z'); 

您可以使用subst命令。 使用System.Diagnostic.Process运行带有所需参数的subst.exe。

这是命令语法:

句法

将路径与驱动器号关联。

 SUBST [drive1: [drive2:]path] SUBST drive1: /D 

drive1:指定要为其分配路径的虚拟驱动器。

[drive2:] path指定要分配给虚拟驱动器的物理驱动器和路径。

/ D删除替换(虚拟)驱动器。

键入不带参数的SUBST以显示当前虚拟驱动器的列表。当前虚拟驱动器的列表。

以与映射网络驱动器完全相同的方式执行此操作,但将其指向当前计算机上的文件夹。 您唯一需要做的就是使用本地文件夹的UNC路径。

这是一个助手类

不确定如何在C#中执行此操作,但这应该可以帮助您:

我刚试过这个并且工作得很完美

在我的电脑上有1个硬盘驱动器设计为2, C:D: :,进入D:我有一个名为Backup的文件夹,如果你右键单击该文件夹并单击Share选项卡,你会看到Network Path ..在我的电脑上它看起来像\\Robert-home\backup

然后我继续进行CMD并执行以下命令

 NET USE Z: \\Robert-home\backup 

Witch成功将D:\backup的内容映射到Z:

我相信你可以在C#中完成这样的任务..

我通常在工作时使用此方法来支持客户端,以便在向其发出新控制台之前传输和备份文件。