自己登録が悪いのはなぜですか?
-
22-07-2019 - |
質問
より大きなインストーラープログラムの一部としてコンポーネントをインストールするために自己登録が使用されると仮定すると、なぜ自己登録が悪いのですか?例えば。自己登録vbカスタムコントロールまたはcapicomなど。自分で作成したdllの場合、自己登録はおそらくそれほど安全ではないことを認めますが、それらについては説明しません。
MSDNにはいくつかの理由の理由が記載されています自己登録が悪い、ここに再現:
OK、この理由は理にかなっています。
広告が特定の種類のソフトウェアクライアントにのみ重要であるという事実を無視すると、なぜこれが問題なのか理解できません。コンポーネントではなく、メインアプリケーションのみをアドバタイズする必要があります。
だから何?すべてのユーザーに「共通」へのアクセス権を付与するマシン上に多くのユーザーがいない限り、コンポーネントは悪いことではありません。その場合、まだワールドエンドではありません。
Microsoftによって作成されたdllの場合を除き、間違いなくこれを信じることができます(エラーがある可能性がありますが、それらを信頼することは不合理だとは思いません)。また、ソフトウェアによって生成されたtlbおよびocxの場合、コーディングエラーはほとんど発生しません。
プログラムによって生成されたdllの場合、これが原因で自己登録が失敗することはないと思われますが、登録キーを手動で追加するとうまくいきます。自己登録にdllが見つからないというエラーを返すようにしたいです。
これは炎を引くと確信しています:/
編集:実際に重要だと思う引数を取り消しました(ユーザーの応答と自分の意見に基づいています)。
解決
このアイテムに関して:
自己登録はユーザーごとのキーを適切にサポートしていません。
だから何?すべてのユーザーにアクセスを許可する 「共通」へコンポーネントは悪くない たくさんのユーザーがいない限り マシン上で、その場合は まだワールドエンドではありません。
マシン上に何人のユーザーがいるのかだけでなく、ユーザーがどのような権限を持っているのかという問題もあります。管理者でない場合、ユーザーはレジストリの HKEY_LOCAL_MACHINE
部分を更新する権限を持つことはほとんどありません。
他のヒント
アイテム
自己登録dllのリンク先 他のdll
dllを登録しようとすると適用されますが、インストーラは登録機能に必要な別のdllをまだコピー/インストールしていません。
1つの潜在的な" gotcha"を追加します。 (MS COMオブジェクトの自動生成された自己登録コードを使用して)に遭遇しました:
自己登録により、実行可能ファイルが実行されますが、必要なものはすべて含まれています。したがって、たとえば、コンポーネントがアクティブ化されたという事実を直接または間接的に記録する場合(おそらく、コンポーネントが非常に特定のポイントまたは非常に特定のコンテキストでのみ実行されることになっている場合、または他のアプリケーションと連携してセキュリティログを記録する場合)、登録はアクティベーションのように見えます(ロギングに注意しない限り)。これは、たとえばコンポーネントが使用されたコンテキストなどのログを記録する場合にも興味深い可能性があります。この場合、継承されたコンテキストがあれば自己登録がトリガーされます。
ほとんどの場合、大したことではありませんが、時には微妙な混乱を引き起こす可能性があります。おそらく好ましくない理由のリストに追加します。