2

アセンブリをチェックしないように登録しても発生しますが、厳密な名前の検証に失敗しているためか、アセンブリをインポートできません。誰かが私がここで間違っていることを見つけることができますか?

以下はトランスクリプトです。参考までに、sn.exeへの切り替えは次のとおりです。

  • -v:署名を確認します。
  • -Vr:検証スキップ用のレジスタアセンブリ。

    PS C:\temp>。\sn.exe-v。\my.dll

    Microsoft(R).NET Frameworkストロングネームユーティリティバージョン3.5.30729.1Copyright(c)MicrosoftCorporation。全著作権所有。

    アセンブリ'。\my.dll'は有効です

    PS C:\ temp \Cmdlets>Import-Module。\my.dllImport-Module:ファイルまたはアセンブリを読み込めませんでした'my、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35'またはその依存関係の1つ。厳密な名前の検証に失敗しました。(HRESULTからの例外:0x8013141A)行:1文字:14

    • Import-Module<<<<。\Microsoft.Rtc.Management.Core.dll
      • CategoryInfo:NotSpecified:(:) [Import-Module]、FileLoadException
      • FullyQualifiedErrorId:System.IO.FileLoadException、Microsoft.PowerShell .Commands.ImportModuleCommand

    PS C:\ temp\Cmdlets>。\sn.exe-Vr *

    Microsoft(R).NET Frameworkストロングネームユーティリティバージョン3.5.30729.1Copyright(c)MicrosoftCorporation。全著作権所有。

    アセンブリ用に検証エントリが追加されました' '

    PS C:\ temp \Cmdlets>Import-Module。\my.dllImport-Module:ファイルまたはアセンブリを読み込めませんでした'my、Version = 4.0.0.0、Culture = neutral、PublicKeyToken=31bf3856ad364e35'またはその依存関係の1つ。厳密な名前の検証に失敗しました。(HRESULTからの例外:0x8013141A)行:1文字:14

    • Import-Module<<<<。\Microsoft.Rtc.Management.Core.dll
      • CategoryInfo:NotSpecified:(:) [Import-Module]、FileLoadException
      • FullyQualifiedErrorId:System.IO.FileLoadException、Microsoft.PowerShell .Commands.ImportModuleCommand

リフレクターを介して、必要なすべての依存アセンブリが同じディレクトリに存在することを確認したことを述べておく必要があります。

4

1 に答える 1

5

アセンブリはおそらく遅延署名またはテストキー署名のいずれかであり、PowerShellでは完全に署名されたアセンブリのみをロードできるようです(つまり、スキップ検証設定は無視されます)。これは、sn.exeが、技術的にはそうではないのに、アセンブリに有効な厳密な名前の署名があると言う理由を説明します。sn -vf(アセンブリが検証スキップ用に登録されている場合でも、代わりに実行することで、アセンブリに実際に有効な署名があるかどうかを確認できますsn -v)。

あなたの混乱の主な原因は、検証スキップがどのように機能するかについての誤った仮定に起因すると思います。検証スキップのためにアセンブリを登録することは、アセンブリの厳密な名前の署名が決して検証されないことを保証するものではありません。検証のスキップは、遅延署名とテストキー署名のアセンブリがこのような状況でシームレスに機能できるようにすることを特に目的としていますが、誰か(PowerShellなど)がそれをオーバーライドして検証を強制することを妨げるものは何もありません。

于 2010-10-01T09:48:52.450 に答える