2012-02-16 68 views
0

私たちは、現在提供されているAPIに基づいて.net 4.0で外部ユーティリティを開発中です。共有フォルダからプログラムを実行する際の問題

外部ユーティリティが起動されるメインプログラムは、仮想サーバー上にあります。だからすべてのユーザーは、ネットワークフォルダに移動し、.exeを起動してプログラムを起動します。

メインプログラムには、ネットワークパスから起動される外部ユーティリティを起動するオプションがあります。

外部ユーティリティは、api dllを介してメインプログラムに接続します。間違っていなければ、dllはactivexコンポーネントです。

すべての開発者は、メインプログラムのローカルインストールがあります。これは.Netで参照を作成するために必要でした。インストールが利用できなかった場合は、参照をバインドすることができませんでした。 開発者にとって、このツールは機能します。

しかし、フルインストールをしていないエンドユーザーにとっては、レジストリに移動して値を検索するため、ツールは機能しません。これらは、エンドユーザステーションでは利用できません。

Unable to cast COM object of type 'System.__ComObject' to interface type 'MegaMapp.MegaCurrentEnv'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE))

を開始しようとしたとき

エンドユーザがこの警告を取得{33D6C7C0-7D1B-450E-B8A4-8A8611D5B40F}は、エンドユーザに利用できない、レジストリキーです。

exeが存在するサーバーからレジストリキーをロードする必要があるツールを教えて、ローカルレジストリからロードする必要はありませんか?

答えて

1

ActiveXコンポーネントは、常にクライアントマシン上でレジストリ設定が必要です。

アプリケーションの起動時にregsvr32を使用してDLLを使用する前に登録することができます。管理者権限が必要かどうかはわかりません。

このような環境でActiveXを使用しようとはしません。

The activex dll is the only way we can communicate with the software. So we built the .net program with the api calls.

ActiveXコンポーネントを使用し、各クライアントからそのサーバーと通信するサーバー(WCFサービスホストなど)を構築します。

+0

activex.dllは、ソフトウェアと通信できる唯一の方法です。そこで私たちはapi呼び出しで.netプログラムを構築しました。 dllは、サーバー上にあるため、クライアントマシンに登録することはできません。 –

+0

UNCパスが動作する可能性があります。登録しようとしましたか? – jgauffin

+0

dllを登録しても、この問題は解決されません。 –

0

外部ユーティリティがActiveX EXEである場合、標準のregsvr32ユーティリティを使用してエンドユーザーのマシンに登録できます。それは、初めて初めて行う必要があります。

+0

外部ユーティリティは、exeファイルが存在するサーバーで登録されているactivex dllを使用する.netプログラムです。 –

+0

@jgauffinに同意します - UNCパス経由でクライアントマシンに登録しようとします –

+0

dllを登録してもこの問題は解決されません。 –

関連する問題