创建虚拟硬盘
如何创建虚拟硬盘(如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#中完成这样的任务..
我通常在工作时使用此方法来支持客户端,以便在向其发出新控制台之前传输和备份文件。