Instrukcje: wyłączanie funkcji obejścia silnej nazwy
Począwszy od programu .NET Framework w wersji 3.5 z dodatkiem Service Pack 1 (SP1), podpisy silnej nazwy nie są weryfikowane, gdy zestaw jest ładowany do obiektu pełnego zaufania AppDomain , takiego jak domyślna AppDomainMyComputer
dla strefy. Jest to nazywane funkcją obejścia o silnej nazwie. W środowisku o pełnym zaufaniu żądania zawsze StrongNameIdentityPermission kończą się powodzeniem dla podpisanych zestawów o pełnym zaufaniu niezależnie od ich podpisu. Jedynym ograniczeniem jest to, że zestaw musi być w pełni zaufany, ponieważ jego strefa jest w pełni zaufana. Ponieważ silna nazwa nie jest czynnikiem decydującym w tych warunkach, nie ma powodu, aby została zweryfikowana. Pomijanie weryfikacji podpisów o silnej nazwie zapewnia znaczną poprawę wydajności.
Funkcja obejścia ma zastosowanie do każdego zestawu o pełnym zaufaniu, który nie jest podpisany z opóźnieniem i jest ładowany do dowolnego pełnego zaufania AppDomain z katalogu określonego przez jego ApplicationBase właściwość.
Funkcję obejścia dla wszystkich aplikacji na komputerze można zastąpić, ustawiając wartość klucza rejestru. Ustawienie dla pojedynczej aplikacji można zastąpić przy użyciu pliku konfiguracji aplikacji. Nie można przywrócić funkcji obejścia dla pojedynczej aplikacji, jeśli została ona wyłączona przez klucz rejestru.
Po zastąpieniu funkcji obejścia silna nazwa jest weryfikowana tylko pod kątem poprawności; nie jest zaznaczone dla elementu StrongNameIdentityPermission. Jeśli chcesz potwierdzić konkretną silną nazwę, musisz wykonać to sprawdzenie oddzielnie.
Ważne
Możliwość wymuszania weryfikacji silnej nazwy zależy od klucza rejestru, zgodnie z opisem w poniższej procedurze. Jeśli aplikacja jest uruchomiona na koncie, które nie ma uprawnień listy kontroli dostępu (ACL) dostępu do tego klucza rejestru, ustawienie jest nieskuteczne. Należy upewnić się, że prawa listy ACL są skonfigurowane dla tego klucza, aby można było je odczytać dla wszystkich zestawów.
Wyłączanie funkcji pomijania silnej nazwy dla wszystkich aplikacji
Na komputerach 32-bitowych w rejestrze systemowym utwórz wpis DWORD o wartości 0 o nazwie
AllowStrongNameBypass
w HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. Klucz NETFramework.Na komputerach 64-bitowych w rejestrze systemowym utwórz wpis DWORD o wartości 0 o nazwie
AllowStrongNameBypass
w HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\. NETFramework i HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\. Klucze NETFramework.
Wyłączanie funkcji pomijania silnej nazwy dla pojedynczej aplikacji
Otwórz lub utwórz plik konfiguracji aplikacji.
Aby uzyskać więcej informacji na temat tego pliku, zobacz sekcję Pliki konfiguracji aplikacji w temacie Konfigurowanie aplikacji.
Dodaj następujący wpis:
<configuration> <runtime> <bypassTrustedAppStrongNames enabled="false" /> </runtime> </configuration>
Funkcję obejścia dla aplikacji można przywrócić, usuwając ustawienie pliku konfiguracji lub ustawiając atrybut na true
.
Uwaga
Można włączyć i wyłączyć walidację silnej nazwy dla aplikacji tylko wtedy, gdy funkcja obejścia jest włączona dla komputera. Jeśli funkcja obejścia została wyłączona dla komputera, silne nazwy są weryfikowane dla wszystkich aplikacji i nie można pominąć walidacji dla jednej aplikacji.