Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > .NET для новичков > Запуск приложения в локальной сети


Автор: Ren 22.12.2007, 19:58
Приветствую всех форумчан!
Столкнулся с такой вот ситуацией. Написал приложение на C#. На локальной машине всё работает отлично. Вся загвоздка начинаеться в тот момен, когда пробую работать с ней в сети. Расскажу по подробнее.
Когда приложение находиться находиться на сетевом ресурсе в локальной сети, при попытке запуска из командной строки появляеться окно, сообщяющее что в приложении произошла ошибка и оно будет закрыто (Стандартное окно ОС для необработаных ошибок).

И так, Размещение файла: \\ServerName\SharedFiles\App.exe

Случай первый (запуск приложения "ручками"): Открыл директорию в проводнике. Запуск файла. Всё работает.

Случий второй (Запуск приложения из командной строки): 
строка: \\ServerName\SharedFiles\App.exe -p1 c:\dir1\1.xml
результат: окно с ошибкой.

тут "-p1" "c:\dir1\1.xml" - параметры, которые использует приложение

По поиску прошёлся, ничего по теме не нашёл :(
В чём может быть собака зарыта? Если кто с такой проблемой сталкивался расскажите как выкрутились.

Автор: mr.DUDA 22.12.2007, 23:35
Дело в том, как в .NET организована система безопасности.

Когда приложение запускается из локальной директории, всё более-менее понятно. Используются обычные настройки безопасности windows (те которые дефолтные или из домена). Зато если запускается прога из расшаренной папки в локальной сети, действуют совсем другие правила. Используется набор разрешений из настроек безопасности .NET, по дефолту всё запрещено: запись и чтение файлов, изменение реестра, даже работа с GUI. Изменить эти правила можно двумя способами: либо настроив политики безопасности .NET, либо прописав атбрибуты assembly запрашивающие необходимый минимум полномочий (иначе сборка просто не запустится).

Автор: Legolas 23.12.2007, 02:20
у меня тоже такая проблема была, спасибо.

Автор: Ren 23.12.2007, 16:15
после добавления try...catch... в Main выдает ошибку следуещего характера "Не могу загрузить файл или сборку '...' или одну из её зависимостей" ('...' -имя, версия и остальная информация о внешней подключаемой библеотеке) а дальше о неудачной попытке и про минимальными разрешения, что собственно и подтверждается выше упомянутым в сообщ. mr.DUDA.
Я в этом покамись новичёк. Подскажите с чего начать что бы этого не было и всё работало, какой раздел литературы копать что бы разобраться? Если есть примерчик, продемонстрируйте плиз smile
Структура следующяя: App.exe, LibUsed.dll. В локальной сети работает до момента подключения библиотеки.

Автор: VisualProgrammerNET 24.12.2007, 03:46
Просто при запуске программы сделай так, чтобы все внешние дллки копировались на локальный диск и подключались уже отсюда. В конце работы их можно удалить.

Автор: mr.DUDA 25.12.2007, 02:03
Можно попробовать следующее.

На компе где будет запускаться прога заходим в меню пуск, настройка, панель управления, администрирование, Microsoft .NET Framework 2.0 configuration.

Выбираем "Configure Code Access Security Policy", "Increase Assembly Trust", указываем на LibUser.dll в сети. Сборка вроде как должна быть подписана ключом.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)