2017-01-16 13 views
0

Я хочу написать настольное приложение Windows с C#, которое виртуализирует определенную папку файловой системы в основном так, чтобы приложение хранило файлы в папке и заставляло файловую систему видеть файлы и подпапки в этой папке, как если бы они были файлами/папки в другой папке в другом месте (виртуальная папка).Виртуализация файловой системы - это выполнимо с C# /. NET?

Можно ли это сделать с помощью C#? И можно ли это сделать без штрафов за доступ к файлам?

Я знаю некоторые приложения, написанные на C++, которые делают это, но я хочу использовать C# (потому что более современный, и я более знаком с ним). Возможно, есть даже некоторые библиотеки для этого? Я только наткнулся на sharpfilesystem, но, не заглянув слишком глубоко в него - я не уверен, что он может делать то, что я ищу. Я также не уверен, что виртуализация файловой системы - это правильное слово, используемое для того, что я хочу сделать, поэтому, пожалуйста, исправьте меня, если это что-то другое (символические ссылки, псевдонимы связаны).

+0

Не нужен ли пользовательский драйвер файловой системы? –

+0

Мой подход был бы эмулированным жестким диском, который фактически записывается в файл на диске или где-то, но, поскольку @JamesHughes предположил, что ему нужен системный драйвер, и я не слышал об одном, который является только C#. EDIT: Я нашел https://msdn.microsoft.com/windows/hardware/drivers/wdf/getting-started-with-umdf-version-2, возможно, это помогает. –

ответ

1

Технология, которой вы пользуетесь, называется расширением пространства имен оболочки (SNE). К сожалению, есть no (supported) way of creating a managed SNE:

Microsoft рекомендует написания управляемого в процессе расширения в проводнике Windows или Windows Internet Explorer и не считает их поддерживаемый сценарий.

Для вашего конкретного случая NTFS junction points может быть достаточно хорошим.

+0

Точки соединения не очень практичны для того, что я хочу сделать. Однако, если вам интересно, я нашел именно то, что искал: https://github.com/TanninOne/usvfs Это C++ dll, но я думаю, что это можно использовать в C#. – BadmintonCat