Excel VBAでのCOM相互運用のための管理権限なしにレーブを呼び出す
-
26-12-2019 - |
質問
管理権限を持たずにレーブを呼び出すための回避策はすでにここで説明されていました:
解決
COM Interop
の管理権限を持たずにレーブを呼び出す
RegistrationServices.RegisterAssembly
と RegOverridePredefKey
HKCU
Hiveの下で自動登録を実装するために、UACにやさしい方法で。私はより詳細な答えを投稿しましたここ
他のヒント
ええ、あなたは2つの問題を抱えています、GACまたはC:\ Program Filesサブディレクトリのように、を置くべきではありません。これらの場所にもUAC標高が必要です。あなたはおそらく、/ codebaseオプションを使用してRegasm.exeを実行するのを忘れました。ファイルの探している場所を教えるために必要なCLRに指示する必要があります。
ユーザは、DLLをディレクトリにコピーするのに十分な特権を持つ必要があります。これは、appdataサブディレクトリのように、c:\ users \ usernameのディレクトリのみです。 Headacheは、regファイルを個々のユーザーに適応させる必要があることに対処する必要があります。そのため、.REGファイルのCodeBase
値を各ユーザーに対して変更する必要があります。このスケールは軽度にそれを置くために縮小されています。
あなたが見つけた答えはあまり良いものではありません。 が実際の作品が機能する唯一の解決策は、独自の登録機能を書くことです。 HKLMの代わりにHKCUでレジストリキーを書き込むもの。 [ comregisterfunction]属性。あなたはあなたが書く必要がある鍵を.regファイルから知っています。そしてあなたはAssembly.GetExecutingAssembly()を使用します。CodeBaseレジストリ値の書き込み先を見つけ出す場所。 [ComunregisterFunction]を忘れないでください。
少なくとも精神では、LAN管理者がこれらのユーザーに課される制限を節約しようとしていることに留意してください。彼らは彼らがサポートするマシン上でどのような種類のコードを実行するかを知ることについて多くのことを気にします。これはあなたを困っているかもしれませんが、少なくとも男と話をします。