Почему приложение .NET при сбое запускается с сетевого диска?
Мое приложение .NET не работает при запуске с сетевого диска, даже если тот же исполняемый файл отлично работает с локального жесткого диска?
Я попытался проверить "Полное доверие" так:
try
{
// Demand full trust permissions
PermissionSet fullTrust = new PermissionSet( PermissionState.Unrestricted );
fullTrust.Demand();
// Perform normal application logic
}
catch( SecurityException )
{
// Report that permissions were not full trust
MessageBox.Show( "This application requires full-trust security permissions to execute." );
}
Однако это не помогает, и я имею в виду, что приложение запускается, и блок catch никогда не вводится. Однако сборка отладки показывает, что созданное исключение - это SecurityException, вызванное InheritanceDemand. Любые идеи?
Ответы
Ответ 1
Это действительно связано с тем, что приложения в сетевом расположении менее доверяются тогда на вашем локальном hdd (из-за политики по умолчанию для платформы .NET).
Если я не ошибаюсь, Microsoft наконец исправила это раздражение в .NET 3.5 SP1 (после того, как многие разработчики жаловались).
Я google'd это: .NET Framework 3.5 SP1 Позволяет запускать управляемый код из сетевого ресурса!
Ответ 2
Пробовал ли вы использовать CasPol для полного доверия Share?
Ответ 3
Возможно, вы уже это сделали, но вы можете использовать CasPol.exe для включения FullTrust для указанного сетевого ресурса.
Например
cd c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727
CasPol.exe -m -ag 1.2 -url file:///N:/your/network/path/* FullTrust
Подробнее здесь.
Ответ 4
Если это .NET 2.0 или выше, ClickOnce был создан, чтобы действительно помочь с этим материалом развертывания. Я использую это только для сетевых ресурсов.
Ответ 5
Это безопасность, встроенная microsoft в инфраструктуру .net. Это способ остановить вредоносное ПО, запускаемое локально с полными привилегиями, поэтому вы не можете изменить это программно в коде.
Что вам нужно сделать, так это увеличить доверие к конкретным сборкам. Вы делаете это в конфигурации .NET Framework (Control Panel- > Administrative Tools) и должны выполняться на каждом компьютере.
Как и при любых мерах безопасности, это боль в заднице, но поможет миру быть менее зараженным и т.д.
Ответ 6
Все, что мне нужно было сделать, это отметить файлы "Только для чтения" (возможно, не связанные) и предоставить все разрешения, кроме полного доступа к проверенным пользователям. Я столкнулся с этой проблемой, прежде чем я это сделал, когда у меня была сетевая доля только для пользователей домена.
Я обнаружил это обходное решение, потому что ни у админа (\ server\C $), ни у моих собственных ПК не было этой проблемы.
Изменить: приложение предназначено для.NET 3.5, не SP1 здесь (версия 3.5.7283)