Загрузка ActiveX с компьютера сети

Автор redfox, 22.01.19, 10:55:09

« назад - далее »

0 Пользователи и 1 гость просматривают эту тему.

redfox

Добрый день

Столкнулся с тем что Компас 18 не может загрузить библиотеку на c# по сети (пример \\server\share\sample.dll), ошибка во вложении
Пробовал loadFromRemoteSources=true в machine.config   не помогает

Кто сталкивался с проблемой? Есть решения?


DesignЯR

Бывали похожие сообщения даже при подключении библиотеки с жесткого диска. Помогало  "Запуск от имени администратора".

redfox

Под Администратором тоже не помогает

DesignЯR

В 17 тоже не подключает библиотеку dll из сетевой папки - а rtw подключается. Видимо не предусматривалось такое. При расположении библиотеки в сети не исключен случай, что одновременно её запустят два пользователя, а такое видимо недопустимо.

Chipollino

Тут скорее не в одновременном подключении нескольких людей, а в самом пути - попробуйте подключить папку с библиотекой как сетевой диск.
Либо проверьте в свойствах файла - для некоторых исполняемых файлов может быть написано, что он получен из непроверенных источников или что-то в этом роде.

#programmer

Возможно проблема с безопасностью подключаемых сборок.

1) Попробуйте подписать сборку (в проекте свойства - подписывание - подписать сборку).
2) В файл проекта AssemblyInfo.cs добавьте:
    using System.Security;
    ..................................
    ..................................
    [assembly: AllowPartiallyTrustedCallers]
    [assembly: SecurityRules(SecurityRuleSet.Level1, SkipVerificationInFullTrust = true)]
3) Используя утилиту CasPol с параметрами:
    caspol.exe -m -pp off -ag 1.2 -url file://///share/your_directoty/* FullTrust
Утилита расположена:
C:\Windows\microsoft.net\framework\<version>\caspol.exe
и
C:\Windows\microsoft.net\framework64\<version>\caspol.exe

Для 64 разрядных систем нужно выполнить из обоих папок.

https://docs.microsoft.com/en-us/dotnet/framework/tools/caspol-exe-code-access-security-policy-tool

redfox

Цитата: DesignЯR от 23.01.19, 12:41:09
В 17 тоже не подключает библиотеку dll из сетевой папки - а rtw подключается. Видимо не предусматривалось такое. При расположении библиотеки в сети не исключен случай, что одновременно её запустят два пользователя, а такое видимо недопустимо.
Дело в том что регистрация типов (через regasm) проходит, т.е. "Типы зарегистрированы успешно" и для x86 и для x64. Но компас отказывается подключать плагин

Цитата: Chipollino от 23.01.19, 13:13:27
Тут скорее не в одновременном подключении нескольких людей, а в самом пути - попробуйте подключить папку с библиотекой как сетевой диск.
Либо проверьте в свойствах файла - для некоторых исполняемых файлов может быть написано, что он получен из непроверенных источников или что-то в этом роде.
В свойствах dll не написано что он из непроверенных источников
С сетевой папкой могут быть проблемы, потому как она подключается у пользователя, а компас, для добавления плагина, надо запустить от администратора, т.е. компас не видит сетевой диск. Если же под администратором подключать сетевой диск, то потребуется загрузка профиля (могу ошибаться)

Цитата: #programmer от 23.01.19, 14:00:31
Возможно проблема с безопасностью подключаемых сборок.

1) Попробуйте подписать сборку (в проекте свойства - подписывание - подписать сборку).
2) В файл проекта AssemblyInfo.cs добавьте:
3) Используя утилиту CasPol с параметрами:
Подписал сборку
Добавил строки в AssemblyInfo.cs
Указал утилитой caspol и для x86 и для x64 FullTrust для сетевой папки, помимо указал в machine.config:
<runtime>
        <loadFromRemoteSources enabled="true"/>
   <NetFx40_LegacySecurityPolicy enabled="true"/> 
</runtime>
Потому как caspol не действует по умолчанию для .net framework >= 4

И ничего, всё так же, "Ошибка подключения библиотеки"

Chipollino

Сетевой диск прописывается в реестре в ветке для конкретного пользователя:
HKEY_CURRENT_USER\Network\<DriveLetter>
Можно подключить с одной и той же буквой и для администратора, и для того, кто будет пользоваться. Тогда путь к библиотеке у всех будет один

Либо запустив компас от администратора из него запустить командную строку и добавить диск командой net use