Почему приложение .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 Позволяет запускать управляемый код из сетевого ресурса!

Ответ 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)