Тест для перенаправления папки “My Documents”

Действительно ли возможно протестировать на перенаправление папки в .NET? Я не имею в виду точки/соединения пересинтаксического анализа, я имею в виду, когда папка (обычно Мои Документы) перенаправляется к серверу.

В таких случаях, если Вы пересекаете систему папки ПК, Вы встретитесь с ошибкой IO при достижении локальной версии папки. Таким образом, было бы полезно смочь протестировать на перенаправление папки My Documents, чтобы смочь принять меры (пропустите папку, переход на сервер и т.д.).

Я знаю, что могу получить местоположение Своих Документов (но только для текущего пользователя) использование Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments) но это не помогает мне протестировать на него заранее через (потенциально) многочисленных пользователей.

Я должен использовать что-то как SHGetKnownFolderPath?

8
задан hawbsl 19 May 2010 в 16:54
поделиться

3 ответа

Вы можете запросить раздел реестра:

http://support.microsoft.com/kb/221837

Вы также можете запросить группу политика перенаправления:

http://technet.microsoft.com/en-us/library/cc781907 (WS.10) .aspx

Как только вы получите это значение, вы можете легко проверить наличие сетевого / подключенного диска, это как я это делаю.

1
ответ дан 6 December 2019 в 01:40
поделиться

Я не уверен, к какой цели вы пытаетесь достичь, вы можете получить каталог в любом месте дерева, к которому у вас может не быть разрешения, так что вам все равно придется поймать исключения. Но одним из способов определить, имеете ли вы дело с сетевым диском, может быть использование DriveInfo в сочетании с запросом корня папки mydocuments.

String myDocumentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
String myDocumentsRoot = Directory.GetDirectoryRoot(myDocumentsPath);
DriveInfo[] info = DriveInfo.GetDrives();
0
ответ дан 6 December 2019 в 01:40
поделиться

Будет сложно получить 100% безошибочное решение для этого (кроме перехвата исключений при доступе - как предложил другой ответчик) - но вот мой лучший снимок.

Создайте словарь Dictionary с указанием максимально возможного числа общих расположений для этих папок (например, 'c: \ users [имя пользователя] \ My Documents', 'd: \ users [ имя пользователя] \ My Documents ') вместе с фактическим местоположением, которое они на самом деле находятся, из Environment . При просмотре иерархии каталогов найдите каталог в этом словаре, чтобы узнать, не у вас есть запись (если вы используете Словарь - используйте компаратор StringComparer.InvariantCultureIgnoreCase при построении, чтобы не возиться с регистром путей).

Я должен сказать, что вам, возможно, придется прибегнуть к перехвату исключения ввода-вывода в конце; потому что структура папок полностью личная - если бы у меня была резервная копия моей папки Users \ на Диске D: тогда этот подход запутался бы!

1
ответ дан 6 December 2019 в 01:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: