как я могу создать виртуальный жесткий диск (например, Z:), который хранит его на физическом жестком диске (например, C:\Files).
Создание виртуального жесткого диска
Ответ 1
Вот код С#, чтобы сделать это напрямую:
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');
Ответ 2
Вы можете использовать команду subst. Используйте System.Diagnostic.Process для запуска subst.exe с требуемыми параметрами.
Вот синтаксис команды:
Синтаксис
Связывает путь с буквой диска.
SUBST [drive1: [drive2:]path] SUBST drive1: /D
drive1: указывает виртуальный диск на который вы хотите назначить.
[drive2:] path Указывает физическое диск и путь, который вы хотите назначить виртуальный диск.
/D Удаляет замененный (виртуальный) диск.
Введите SUBST без параметров для отображения список текущих виртуальных дисков .list текущих виртуальных дисков.
Ответ 3
Сделайте это так же, как и на карте сетевого диска, но укажите его на папку на текущем компьютере. Единственное, что вам нужно сделать, это использовать UNC-путь для локальной папки.
Ответ 4
Не уверен, как это сделать на С#, но это должно вам помочь:
Ive просто проверил это и отлично работает
На моем компьютере есть 1 жесткий диск, разработанный в 2, C:
и D:
, идя в D:
, у меня есть папка под названием "Резервное копирование", если вы щелкните правой кнопкой мыши по папке и нажмите вкладку Share
, вы см. Network Path
.. На моем компьютере это выглядит как \\Robert-home\backup
Затем я перешел к CMD
и выполнил следующую команду
NET USE Z: \\Robert-home\backup
Ведьма успешно отображает содержимое D:\backup
на Z:
Я уверен, что вы можете выполнить такую задачу в С#..
Обычно я использую этот метод для поддержки клиентов для передачи и резервного копирования файлов до того, как им будут выпущены новые консоли.