0
Completed

Problem z Windows 8

Tomasz Porzelski 9 years ago updated by Kuba Szostak (Geo7) 9 years ago 4
Dzien dobry
Posiadam Autocad 2012 na Windows 8. Probuje zaladowac bilioteke dll  i wyskakuje mi komunkat o tresciNazwa pliku: 'file:///C:\Program Files
(x86)\GeoSoft\Geo7.Tools.AutoCAD.2010.bundle\Geo7.Tools.AutoCAD.dll' --->
System.NotSupportedException: Podjęto próbę załadowania zestawu z lokalizacji
sieciowej. W starszych wersjach programu .NET Framework próba ta spowodowałaby
uruchomienie zestawu w trybie piaskownicy. W tej wersji programu .NET Framework
zasady CAS domyślnie nie są włączone, więc to załadowanie może być
niebezpieczne. Jeśli ma ono na celu uruchomienie zestawu w trybie piaskownicy,
włącz przełącznik loadFromRemoteSources. Aby uzyskać więcej informacji, zobacz
http://go.microsoft.com/fwlink/?LinkId=155569.
w System.Reflection.RuntimeAssembly._nLoad(AssemblyName fileName, String
codeBase, Evidence assemblySecurity, RuntimeAssembly locationHint,
StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound,
Boolean forIntrospection, Boolean suppressSecurityChecks)
w System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName
assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly,
StackCrawlMark& stackMark, IntPtr pPrivHostBinder, Boolean throwOnFileNotFound,
Boolean forIntrospection, Boolean suppressSecurityChecks)
w System.Reflection.RuntimeAssembly.InternalLoadAssemblyName(AssemblyName
assemblyRef, Evidence assemblySecurity, RuntimeAssembly reqAssembly,
StackCrawlMark& stackMark, Boolean throwOnFileNotFound, Boolean
forIntrospection, Boolean suppressSecurityChecks)
w System.Reflection.RuntimeAssembly.InternalLoadFrom(String assemblyFile,
Evidence securityEvidence, Byte[] hashValue, AssemblyHashAlgorithm
hashAlgorithm, Boolean forIntrospection, Boolean suppressSecurityChecks,
StackCrawlMark& stackMark)
w System.Reflection.Assembly.LoadFrom(String assemblyFile)
w Autodesk.AutoCAD.Runtime.ExtensionLoader.Load(String fileName)
w loadmgd()

Wygląda na to, że Geo7 jest umieszczony na dysku sieciowym więc system nie pozwala na załadowanie potencjalnie niebezpiecznych bibliotek dll. Proszę przenieść cały folder Geo7 do folderu na dysku lokalnym.

Pozdrawiam!
Under review
Witam,jest to znany problem. AutoCAD 2012 wykorzystuje bibiloteki Microsoft .NET Framework w wersji 4.0, które są bardziej czułe na kwestie bezpieczeństwa. W jakiś magiczny sposób Framework wie, że jest ładowane rozszerzenie ściągnięte z sieci i blokuje tą akcję generując błąd:

An attempt was made to load an assembly from a network location (...)

mimo, że pliki są fizycznie zlokalizowane na lokalnym dysku. Jest kilka rozwiązań tego problemu.

1. Można odblokować zabezpieczenia we wszystkich plikach *.dll przez kliknięcie prawym klawiszem i wybranie opcji "Właściwości":




2. Można zmienić konfigurację programu AutoCAD
poprzez modyfikację pliku acad.exe.config zlokalizowanego zazwyczaj w
C:\Program Files\AutoCAD 2012
W tym celu trzeba otworzyć np. w Notatniku plik acad.exe.config i wkleić poniższy tekst

<configuration>
<startup
useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime
version="v4.0"/>
</startup>
<runtime>
<loadFromRemoteSources
enabled="true"/>
</runtime>
<system.diagnostics>
<sources>
<source
name="System.Windows.Data"
switchName="SourceSwitch">
<listeners>
<remove
name="Default" />
</listeners>
</source>
</sources>
</system.diagnostics>
</configuration>

To rozwiązanie ma wadę/zaletę (zależnie od punktu widzienia) - pozwala ładować pliki rozszerzeń z lokalizacji sieciowych. Z jednej strony jest to potencjalne zagrożenie ponieważ pozwala na ładowanie plików wykonywalnych z potencjalnie niebezpiecznych źródeł, więc pamiętaj że robisz to na własne ryzyko. Z drugiej jednak strony można umieścić aplikację Geo7 Tools na dysku sieciowym i wszystkim komputerom w sieci wskazać tą lokalizację. Wtedy wystarczy jedna aktualizacja aby wszystkie komputery korzystały z aktualnej wersji Geo7 Tools.
Proszę o informację czy te rozwiązania okazały się pomocne.

Pozdrawiam,
Kuba