Запустите программу .NET с подключенного диска или общей папки - PullRequest
7 голосов
/ 11 декабря 2008

Я написал приложение C # Windows Forms для объединения файлов и папок из удаленной папки на одном компьютере (папка «source» - это подключенный диск - «Z: \ folder») с другой удаленной папкой на другом компьютере ( Папка «destination» - это UNC-путь к общей папке - «\\ computername \ sharedfolder»). У меня есть Полные разрешения для обеих папок. Когда я запускаю программу на своем локальном компьютере, она работает нормально, но когда я пытаюсь запустить ее из исходной папки, происходит сбой с исключением из системы безопасности.

Ошибка возникает при вызове конструктора DirectoryInfo для папки назначения (т. Е. DirectoryInfo (@ "\\ computername \ sharedfolder"). Я предполагаю, что проблема заключается в том, что я запускаю программу с подключенного диска. Есть обходные пути?


Конкретное исключение: Запрос на разрешение типа «System.Security.Permissions.FileIOPermission, mscorlib, Версия = 2.0.0.0, Культура = нейтральный, PublicKeyToken = b77a5c561934e089» не выполнен.


UPDATE

хорошо, я перенес свое приложение в Visual Studio 2008 (ранее оно было написано в 2005 году), нацелено на платформу .NET 3.5, скомпилировано и попробовано снова.

Я получил точно такую ​​же ошибку.


ОБНОВЛЕНИЕ - РАЗРЕШЕНИЕ

Я попробовал это с .NET 3.5, и он не работал, потом я заметил, что вы сказали, что 3.5 SP1. Сервисный пакет определенно необходим.

Проблема решена. Спасибо.

Ответы [ 2 ]

8 голосов
/ 11 декабря 2008
6 голосов
/ 11 декабря 2008

Вам необходимо включить разрешения FullTrust для приложения. Приложениям .NET, работающим на общем сетевом ресурсе, предоставляются разрешения безопасности локальной интрасети, и поэтому они запускаются в изолированной программной среде.

Вот пакетный файл, который я написал для одного из наших тестирующих приложений, работающих в сети. Он должен заставить вас работать с небольшими изменениями.

@ECHO OFF
SET CASPOL=%windir%\Microsoft.NET\Framework\v2.0.50727\CasPol.exe
CLS

%CASPOL% -pp off
%CASPOL% -m -ag 1.2 -url file://server/directory/* FullTrust

Как указано выше, .NET 3.5 устраняет это поведение.

...