3

現在、Delphi 7 で記述された Delphi .CPL があります。これは、HKLM の設定を更新する必要があり (サービス アプリケーションで使用される)、Vista、Win7、および Server 2008 をサポートする必要があります。現在、これは AppCompatFlags に RUNASADMIN 値を追加することで実行できます。 /Layers、値の名前として CPL ファイルを使用します。これにより、Windows は「レガシー コントロール パネル アプレット」の昇格を要求します。

Delphi 2010 で CPL を「レガシー」に見えないように構築する方法を見つける必要があります。また、可能であれば、レジストリの設定や昇格を必要としない方法を見つける必要があります。Common-Controls v6 および "requireAdministrator" を参照する DLL/CPL に通常のマニフェスト リソースを追加しても問題は解決しません。昇格が要求されず、HKLM アクセスが失敗します。元のファイルと Delphi 2010 の .CPL の両方を、SYSWOW64 のファイルに移動し、右クリックして「管理者として」実行することにより、(昇格後に) 正しく実行することができます。

その後: この方法で DLL を昇格できない理由についての簡潔な説明が、ここに投稿されたフォーラムで見つかりました。

4

2 に答える 2

2

COM昇格を使用する必要があると思います。削除されたように見えるこれに関する素晴らしいブログ投稿がありましたが、投稿の背後にあるソース コードは VCL コンポーネントのWeb サイトでまだ入手できます

于 2009-10-23T17:22:57.677 に答える
1

私は自分の質問に対するより良い答えを見つけたと思います。「非レガシー」コントロールパネルアプレットなどの動物があります。これについては、MSDNのMSDNで説明されています。「WindowsVistaでは、.cplファイルを作成する手間をかけずに、アプレットの実行可能ファイルを作成して登録することで、コントロールパネルに独自のアプレットを追加できるようになりました。」

于 2009-10-27T00:02:26.083 に答える