• 締切済み

レジストリ登録なしにDLLからオブジェクト生成

下記URLにあるような、 レジストリ登録なしにDLLからオブジェクト生成できるDLLの作成を模索しております。 http://na-s.jp/NOM/NOM_1.1.2.0_Readme.html 使用方法としてはAccessなどのVBAが自作DLLを呼び出すというものなのですが 自作DLLを作るたびにRegAsmを管理者権限で稼働台数分実行せねばならず しかも自作DLL作成者には管理者権限は与えられていないため、 非常に不便なことになると予想しています。 そこで上記URLにあるようなDLLを1度RegAsmしておくだけで、後に続く自作DLLは そのDLLを介して実行できるものを作りたいと考えています。 いろいろ調べたのですが、調べ方が悪いのか具体例がヒットせず ここで質問したしだいです。 1.希望開発環境であるVS2010以降 C#で作成は可能か (C#以外でないと作成できないのであれば何で作成できるか) 2.プログラム具体例 以上、何卒知恵をお貸しください。 よろしくお願いいたします。

  • mtry
  • お礼率75% (6/8)

みんなの回答

  • kumatti1
  • ベストアンサー率60% (73/121)
回答No.1

この辺りで、どうぞ。 「Microsoft.Windows.ActCtxでWSHでもReg‐Free COM - イグトランスの頭の中(のかけら)」 http://dev.activebasic.com/egtra/2012/07/07/498/

mtry
質問者

お礼

回答ありがとうございます。 内容、確認します。

関連するQ&A

  • dllファイルをレジストリ登録できない

    Windows Vistaを使っています。 あるdllファイルがありまして、 そのファイルをレジストリ登録したいと思っております。 Windows XPでは正しくレジストリ登録できたdllのファイルなのですが、 Vistaで実行するとエラーとなってしまいます。 Vistaでの実効手順は以下の通りです。 (1)C:\WINDOWS\system32\cmd.exeを管理者権限で実行 (2)regsvr32 ~~.dllを実行 (2)を実行すると添付ファイルのメッセージが表示されてしまいます。 私なりに調べてみまして、 (1)を管理者権限で実行すること。 (2)でdllファイルをフルパスで指定して実行すること。 の2点は試しましたが、結果は同じでした。 何かほかに考えられることはございませんか? 解決できそうな案を、ご提示いただければ、私が確かめます。 ぜひご教示お願いいたします。

  • VB2010で作成したdllからtlbが作れない

    VB.NETで作成したDLLをExcelのVBAから呼び出すということをやっています。 VB2007のときはよかったのですが、VB2010にしてからうまくいかなくなりました。 具体的には、コンパイルしてClassLibrary1.dllファイルを作成してから C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\RegAsm.exe ClassLibrary1.dll /tlb:ClassLibrary1.tlb /codebase を実行すると、 ClassLibrary1.dllは有効な.NETアセンブリではないため、読み込めませんでした。 となります。 ClassLibrary1の「アセンブリをCOM参照可能にする」にはチェックを入れています。 おわかりの方がいらっしゃいましたら、どうぞよろしくお願いいたします。

  • DLL登録プログラムに関して

    Vistaに対応するためDLLの登録プログラムを自前で作成していますが、登録するDLLによって登録がうまくいかないことがあるので困っています。 regsvr32で登録した場合も同じような現象になります。 具体的には以下のような状況です。 ・レジストリに記憶されるファイルパスが、日本語を含む場合文字化けしてしまいます。 この場合、文字化けしたパスを認識できずアプリケーション側でオブジェクトの生成に失敗してしまいます。 文字化けしないようにするためにはどのようにすればよいでしょうか? ・また、レジストリに記憶されるファイルパスが短い形式で記憶されます。 フルパスで記憶されるDLLとされないDLLがあるのですが、これはどのよう な違いでしょうか? 互換性維持のためフルパスで記憶するようにしたいと思っています。 ※DLL自体は私がVC6で作ったものです。 たとえばデスクトップ上にあるDLLをした結果このようになります(作成したDLL) 結果:C:\DOCUME~1\user\デfスXクN~1\regit.dll 期待値:C:\Documents and Settings\user\デスクトップ\regit.dll しかし一方で他のDLLではこのように期待度どおりの結果になります(他のDLL) 結果:C:\Documents and Settings\user\デスクトップ\my.dll 作成したDLLの開発環境は以下のとおりです。 ・Windows XP Home Edition ・Visual C++ 6.0 できればDLLを修正することで解決したいと思っています。 不可能であれば、登録プログラムの方を修正する方向で考えています。 同じ現象に出くわした方がいらっしゃれば、どうかお力添えください。 よろしくお願いします。

  • 読み込むDLLのディレクトリを変更したい

    Visual C++ 7.1を使用しています。 ライブラリを使って作成したアプリを配布するとき、 一緒にDLLファイルも配布しないと起動できませんよね? 通常は、DLLファイルのパスは実行ファイルと同じか、 system32などのディレクトリに入れなければ 「~~~.dllが見つかりません。」 みたいなエラーが表示されるかと思います。 (違ったらすみません) そうではなく、DLLファイルが10個以上ありますので、 実行ファイルと同じディレクトリだとややこしくなるため、 実行フォルダより1つ下の階層にまとめて置きたいのですが、 そのような事は可能なのでしょうか? できれば、LoadLibraryなどの関数は使わず、 何かしらの設定で出来るのであればそれが望ましいです。 可能でしたら、方法をご伝授いただけると助かります。 よろしくおねがいします。 サンプルですが構成としては以下のような感じです。 (※[ ]はフォルダ名を表します) [Main]  ReadMe.txt  実行ファイル.exe  [Image]   image1.png   image2.png  [Sound]   sound1.wav   sound2.wav  [DLL]   graphics2d.dll   input.dll   sound.dll   file.dll

  • DLLからサードパーティDLLを使うには

    現在VisualC++2010においてレギュラーDLLを作成しています。そのDLL内でサードパーティライブラリを使いたいのですが、MFCプロジェクトなどと同様にインポートライブラリ設定やDLLの配置を行なってもうまくいきません。具体的には、作成したレギュラーDLLをインポートしたプログラム実行時にdllinit.cpp内でDebug Assertionが出ます。 VC++においてDLL内からDLLを使用するのは一工夫いるということまではわかっているのですが、なにかよい解決策をご存知の方がおられましたらご教授願えれば幸いです。

  • C#で実行可能なdllの作成方法

    現在、C#でアプリケーションを作成していますが、exe形式ではなくdll形式で実行可能な モジュールを作成したいです。 しかし、単に[STAThread]のMain関数を作ったり、staticコンストラクタを作成しただけでは 起動できません。 どうしたら実行可能なdllを作成できるのでしょうか。 最終的にやりたいことは、C++のCreateRemoteThread()からこのdllを起動することです。 どうぞよろしくお願いします。

  • Cで作成したDLLをJNIから呼び出せない

    WindwosCEでC言語のDLLを作成してJNIから実行すると エラーになってしまいます。 ※C++で作成したApplicationからは呼び出せました ソールはこんな感じです・・・ ---------------------------------------------------------------- import java.util.*; public class CgiChk { public static void main(String[] args) throws Exception { System.loadLibrary("pimapi"); //既存のDll(\windows下)は読込める System.loadLibrary("TestDll");//自作のは読込めない } } 困っています。どなたか解決法のわかる方いらっしゃいますか。

  • C++のDLLが見つからないVBAから見つからない

    こんにちは。質問させてください。 Visual C++ 2008 Express Editionで自作DLLを作成しました。 このDLLが、開発環境(WindowsXP、Excel2002)の Excelマクロで呼び出したところ、うまく動いたのですが、 WindowsVista、Excel2007のPCで同じマクロを実行すると 実行時エラー '53' ファイルが見つかりません [ファイル名] というエラーが出て実行できません。 どちらの環境でもDLLファイルはフルパスで指定していて ファイルはちゃんと存在しています。 原因が、Vistaなのか、Excel2007なのか またはその他の要因なのか、わからずに悩んでいます。 どなたか心当たりがある方がいらっしゃいましたらご教授願います。 よろしくお願いします。 その他詳細 ・DLLはdefファイルを使ってEXPORTしました。 ・Vistaのユーザーアカウント制限をoffにしてます。 ・Declear部分のソースコードは Declare Sub Prepare Lib "C:\test\API_test.dll" (ByVal FileName As String)です。

  • AccessVBAからC言語のDLLの呼び出し方

    初心者です。はじめまして お世話になります。 概要:C言語で作成したDLLをVBAで呼び出す。 タイトルの通り、C言語で作成したDLLをVBAで呼び出したいのですが、うまく 呼び出すことができず、「エラー番号:49 DLLを正しく呼び出せません。」 というエラーが返ってきてしまいます。 DLLの作成手順もしくはDLLの呼び出し方でおかしな所があればご指摘頂けない でしょうか? C言語のDLL、作成手順は以下の通りです。 DLL作成環境:Visual C++ 6.0 DLL作成手順----------------------------------------- (1)プロジェクトをDLL用に作る  新規作成→プロジェクト→Win32 Dynamic-Link Library→空のDLLプロジェ クト (2)ファイル追加  ソースファイル+すべてのヘッダファイルを追加 (3)DLLを出力対象の関数に「_declspec(dllexport)」をつける 例)------------------------------------- _declspec(dllexport) short dlltest (char *str1, char *str2) --------------------------------------- (4)char を unsigned char へ変換する(/J コンパイルオプション) (5)プロジェクトをデバッグモードからリリースモードに切り替える (6)ビルド実行 (7)「Release」配下に.dllとlibができる。 -作成手順完----------------------------------------------------- 実際のVBAのDLLの呼び出しは以下の通り行っています。 -AccessVBAにてDLLの宣言及び、呼び出し------------------- '呼び出し宣言 Public Declare Function dlltest _ Lib "C:\Project\Dlltest\Release\dlltest.dll" _ (ByVal st1 As String, _ ByVal st2 As String) As Integer 'DLL呼び出し KEKKA = dlltest(string1, string2) -呼び出し完------------------------------------------------ これで実行するとエラーが返されていまいます。 なにぶん、初心者で今回初めてVBAでのプログラミングを行っているので観点 の抜けなどが多分にあると思われます。 どんな小さなことでもご指摘頂けないでしょうか? 宜しくお願い致します。

  • VS2010でC#のDLLを作成する手順

    Visual Studio 2010でVisual C#のコードのDLLを作成したいのですが 簡単なコード例で具体的な操作手順を教えていただけないでしょうか。 (Microsoft Visual Studio 2010、OS WindowXP) Visual C++でDLLを作成する手順については 「チュートリアル: ダイナミック リンク ライブラリの作成と使用 (C++)Visual Studio 2010 」 <http://msdn.microsoft.com/ja-jp/library/ms235636(v=vs.100).aspx> に詳しく手順が記載されていましたが、このVisual C#版が見たいのですが見当たりませんでした。 よろしくお願いします。