私は制限付きユーザーであり、Outlook 2003および2007でC#ライブラリを公開するOutlookマクロを作成する必要があります。
インストール時も含めて、管理者権限がまったくないため、RegAsmを実行できず、マネージドアドインを作成できません(おそらく)。
このシナリオでVBAから.Netコードを呼び出す方法はありますか、それとも他の解決策はありますか?
これは個人的な使用のみを目的としているため、醜いハックは完全に許容されます(機能する限り)
私は制限付きユーザーであり、Outlook 2003および2007でC#ライブラリを公開するOutlookマクロを作成する必要があります。
インストール時も含めて、管理者権限がまったくないため、RegAsmを実行できず、マネージドアドインを作成できません(おそらく)。
このシナリオでVBAから.Netコードを呼び出す方法はありますか、それとも他の解決策はありますか?
これは個人的な使用のみを目的としているため、醜いハックは完全に許容されます(機能する限り)
regasm
オプションを指定して実行し、結果のファイル/regfile
でHKLMをHKCUに置き換えることで、これを解決しました。.reg
RegistrationServices.RegisterAssembly
.NET APIがあります (これは で使用されていると思いますRegAsm.exe
)。
RegOverridePredefKey
目立たないが非常に便利な Win32 APIもHKEY_CLASSES_ROOT
ありRegisterAssembly
ますHKEY_CURRENT_USER\Software\Classes
。
巧妙なプログラムは、 と の両方RegistrationServices.RegisterAssembly
を使用してRegOverridePredefKey
、 の下にある COM クライアントのアセンブリを登録できますHKEY_CURRENT_USER
。
私はこれを自分で試したことはありませんが、かなり実行可能だと思います。
更新されましたが、どうやらこのアプローチはうまくいきます。
COM オブジェクト (ActiveX コントロールなど) を登録して、システム内のすべてのユーザーに表示するには、管理者権限が必要です。
ただし、すべてのユーザーへの可視性が必要ない場合 (またはユーザー制限が制限されているために不可能な場合)、COM オブジェクトは特定のユーザーに対してのみ登録できます。
これは通常、HKLM ではなく HKCU にオブジェクトを登録することによって行われます。これは、「通常の」COM オブジェクトと、.NET COM Interop を通じて公開される COM オブジェクトに適用されます。
他のよりきめの細かいアプローチも存在します。特定の実行可能ファイルをアドレス指定する、前述の RegFree COM です。
したがって、上記のすべてを考えると、すべての情報をregファイルにキャプチャし、HKLMをHKCUに置き換えるソリューションが機能するはずです(うまくいきませんが、ツールもそうです)。
可能な解決策を見つけましたが、まだ試す時間がありません。
残念ながら、COM の動作方法が原因で、管理者権限なしで COM オブジェクト (相互運用またはその他) をインストールすることは不可能です。
com オブジェクトを登録するHKEY_CLASSES_ROOT
と、マシン レベルのキーであるいくつかのエントリが書き込まれるため、管理者権限が必要になります。
ここで、ハック的な解決策が受け入れられると言ったので、それを機能させるために実行できるいくつかの手順を次に示します。ただし、管理者権限を持っていない場合、これはあなたのマシンではなく、おそらく仕事用のマシンであると想定しています。これらの手順を実行すると、解雇される可能性が非常に高くなります。標準的な免責事項とその他: あなたがばかで、訴えられたり、解雇されたり、撃たれたり、強盗されたりしたとしても、それは私のせいではありません。
最初に、どのレジストリ キーを追加する必要があるかを確認する必要があります。ホストが以前にコンポーネントを見たことのない「クリーンな」マシン(またはregキーがないことがわかっているマシン)でこれを行っていることを確認してください。キーをキャプチャするマシン監視プログラムをインストールします。 [関連のない] MS の記事へのリンクを次に示します。そこでは、まさにそれを行うアプリが推奨されています。
インストールを実行しているモニターを使用して、追加します。これで、どのキーを作成する必要があるかのログを取得できるはずです。ログを使用して、レジストリ エクスポート ファイルを作成します。
ここが難しいところです。基本的に、BartPE イメージからマシンを起動し、レジストリをマウントしてスクリプトを実行します。ただし、キー パスが正しくないため、スクリプトはそのままでは機能しません。
MSにはTechNetの記事があります(ただし、リンクには括弧が含まれているため、ここでは適切に機能しません)ので、Googleで検索すると、最初の結果になるはずです。
この記事を読むと、マシンのレジストリが のサブキーとしてマウントされることがわかりますHKEY_LOCAL_MACHINE
。必要なことは、新しいパスに一致するようにレジストリ エクスポートを変更することです。この手順が完了するとすぐに、BartPE イメージから起動し、レジストリをマウントして、スクリプトをインポートし、ハイブをアンマウントしてから再起動できるはずです。ファイルを正しいパスにコピーしたと仮定すると、動作するはずです。
幸運を。