問題タブ [strongname]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - C#DLLの厳密な命名、変更を検出しない
厳密な名前付けにより、アセンブリの暗号化ハッシュが作成され、DLL をロードするための厳密な名前として使用されることを理解しています。
この機能を使用してバイナリの破損を検出し、ソフトウェアに問題があり、再インストールする必要があることをユーザーに通知したいと考えていました。
これはバイナリへのいくつかの変更に対して機能しますが、バイナリ、特にバイナリ内の静的文字列を変更しても、アプリケーションが適切な厳密な名前の dll を見つけられないことを報告しないことがわかりました。
厳密な名前を作成するためにアセンブリのどのデータが使用されているか、厳密な名前付けが常に dll の変更を検出しない理由を説明してもらえますか? 厳密な名前付けに追加情報を強制的に含める方法はありますか?
バイナリの破損を検出する別の方法はありますか?
乾杯
ライアン
clickonce - ClickOnce 厳密な名前の依存関係の署名
多くの依存DLLがあるWindowsアプリケーションがあります。このアプリケーションを発行すると、DLL の 1 つに対してエラーが返され、前提条件としてマークされるためには強力に署名されている必要があります。この問題を解決するにはどうすればよいですか?
.net - 厳密な名前のファイルから秘密鍵を抽出していますか?
タイトルが示すように、snk ファイルから秘密鍵を抽出する方法を知っている人はいますか? 暗号化のために、StrongName の秘密鍵を使用したいと考えています。私は読みました:
http://msdn.microsoft.com/en-us/library/k5b5tt23(VS.80).aspxファイルに存在する場合、sn -o key.snk は秘密鍵と公開鍵の両方を抽出しますが、私はそれを試してみましたが、秘密鍵と公開鍵を区別しない長いCSV形式の文字列だけです。
c# - snk対コード署名証明書
私の組織では、厳密な名前のアセンブリを持つsnkファイルを使用しています。自分でsnkを生成します。
さらに、バイナリでコード署名署名を使用します。Verisignからpfxを取得します。
- これら2つのプロセスの違いは何ですか?
- ベリサインからもsnkが届かないのも問題ではないですか?
.net - 強い名前でアセンブリに署名すると、アセンブリが機能しなくなります
私の同僚は、COM相互運用機能を介してJScriptで使用するためにVB.netでアセンブリを作成しました。以前はアセンブリは正常に機能していましたが、署名したところ、Windows7マシンでのみ機能するようになりました。2台のWindows7マシンと2台のWindowsVistaマシンをテストしました。
アセンブリに署名し、JScriptでActiveXオブジェクトをインスタンス化しようとすると、メッセージなしで数字のみのエラーが返されます。
エラー:
エラー番号:-2146234304
Googleでエラー番号を検索しても、あまり返されませんでした。
アセンブリから厳密な名前を削除すると、問題なく機能します。何が問題になる可能性があるかについてのアイデアはありますか?違いがあるかどうかはわかりませんが、アセンブリはVS2010でコンパイルおよび署名されています。
.net - Import-Moduleでの強力な名前検証の失敗
アセンブリをチェックしないように登録しても発生しますが、厳密な名前の検証に失敗しているためか、アセンブリをインポートできません。誰かが私がここで間違っていることを見つけることができますか?
以下はトランスクリプトです。参考までに、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
- Import-Module<<<<。\Microsoft.Rtc.Management.Core.dll
リフレクターを介して、必要なすべての依存アセンブリが同じディレクトリに存在することを確認したことを述べておく必要があります。
c# - 再利用のために厳密な名前を外部で参照および保存する
同じソリューション内の特定のアセンブリを指すInternalsVisibleToAttributeを設定したアセンブリがたくさんあります。残念ながら、指しているアセンブリにはストング名が付いているため、常に同じ公開キー トークンを AssemblyInfo.cs ファイルに何度も挿入する必要があります。C# にはプリコンパイラがないため、理想的にはこの冗長性を排除するにはどうすればよいでしょうか。
.net - .snk の秘密鍵を使用して任意のデータに署名する
私は .NETパッケージ マネージャーを開発していますが、考えさせられたのはセキュリティです。
誰でもアセンブリをリポジトリにアップロードできる可能性がある場合、そのアセンブリが信頼できるソースからのものであることを確認するにはどうすればよいですか? たとえば、NHibernate.dllNHForge の秘密鍵で署名されていれば、もっと信頼できます。これを確認するには、NHForges の公開鍵を使用してアセンブリの署名を検証するだけです。
さて、それを念頭に置いて、どうすればこの関係 (この特定の公開鍵がこの特定の人物に属している) を確立できるのでしょうか? 私が思いついたアイデアは次のとおりです。
- プロジェクト作成者は、プロジェクトと作成者に関する情報 (名前、電子メールなど) を含む XML ファイルを作成します。
.snkこの XML ファイルは、後でアセンブリ自体に署名するために使用されるファイルから抽出された作成者の秘密キーで署名されています。- 作成者はこの署名済み XML ファイルをリポジトリにアップロードします。リポジトリでファイルがチェックされ、作成者と公開鍵の関係が確立されます。
これを実装するには (これは実行可能なアイデアですか?)、.snkファイルにアクセスして PK を読み取るプログラムによる方法が必要です。.NET でこれに対応するものはありますか?
managed-c++ - マネージC++の厳密な名前/署名
.pfxファイルを使用してマネージC++dllに署名するにはどうすればよいですか?
または、署名されたc#プロジェクトに署名されていないマネージC ++ dllを含める方法はありますか?署名されたdllは本当に必要ありません。「参照されるアセンブリ'SlimDX'には厳密な名前がありません。」というエラーが表示されなくなるようにVSが必要です。署名する必要がある私のc#プロジェクトで。
.net - .NET 4 を対象とするアプリケーションを実行するために 2.0 をインストールする必要があるのはなぜですか?
.NET 3.5 を使用して構築された、かなり複雑な WPF および C++/CLI アプリケーションがあります。WPF のメリットを利用するために 4.0 に移行したので、ソリューション内のすべてのプロジェクトは 4.0 をターゲットにしています。
4.0 (および MSVC++ 2010 [および 2008]) のみの XP マシンでアプリケーションを実行すると、エラー ダイアログに次のメッセージが表示されます。
「このアプリケーションを実行するには、まず次のバージョンの .NET Framework のいずれかをインストールする必要があります: 2.0.50727」
.NET 4.0 と共に .NET 2.0 をインストールすると、アプリケーションが実行されます。
アセンブリのロードをデバッグして何が起こっているのかを知る方法を知っている人はいますか?
アップデート
VS2010 の「モジュール」ウィンドウについて知り、デバッガーで実行しているときに、出力ウィンドウでモジュールが読み込まれたイベントも監視しました。アプリケーションで .NET 2.0 モジュールが 1 つ実行されていることがはっきりとわかります。
これをロードしたものを確認する方法はありますか?