• 締切済み
  • すぐに回答を!

COMアプリでビルド時にCOMが登録できません

COMアプリを勉強しています。ビルドをするとコンパイル、リンク、マニフェスト、出力を登録と進んで終了するのですが、出力の登録ができません。 OSはWindows Vista、VisualStudio 2008を使用しています。エラー内容は「error PRJ10050: 出力は登録できませんでした。ユーザごとのリダイレクトを有効にするか、引き上げられたアクセス許可を使用して、コマンドプロンプトからコンポーネントを登録してください。」となります。 多分セキュリティの関係で登録できないのでしょうか。セキュリティはどう設定すればよろしいでしょうか?はじめは登録できたのですが、Vista SP1をインストールした後に登録できなくなりました。

共感・応援の気持ちを伝えよう!

  • 回答数1
  • 閲覧数1768
  • ありがとう数0

みんなの回答

  • 回答No.1
  • jk39
  • ベストアンサー率54% (366/670)

私はまだSP1を導入していないので、 明確な答えを持っているわけではないのですが、 問題がセキュリティであるのならば以下のことを試してはどうでしょうか。 (1)VisualStudio2008を起動するとき、 アイコンを右クリックしてコンテキストメニューを開き、 「管理者として実行(A)...」で起動するとうまくいきそうな気がします。 (2)ただし、いつも(1)の作業をするとなると面倒ですよね。 普段お使いになるアカウントに管理者グループの権限を与えるのも有効かと思います。 [コントロールパネル]→[ユーザー アカウント]→[ユーザーアカウントの管理]のダイアログで、 ご自分のアカウントに「Administrators」のグループメンバシップを付与してください。 以上、参考まで。

共感・感謝の気持ちを伝えよう!

質問者からの補足

(1) を実行してうまく行きました。今気付いたのですが、管理者として実行しなくてもうまく行きました。原因はわかりませんがいつの間にかできるようになっていました。先ほどはOLEView.exeを実行していたのでそれが邪魔していたのか、SP1をインストールした後遺症としてできなかったのかもしれません。 通常は管理者としてログインしていますが、時々管理者として実行するを選択するとうまくいくときがあるので、もしかすると有効な方法かもしれません。いずれにしましてもありがとうございました。

関連するQ&A

  • visualstudio2008

    visualstudio2008を用いているのですが、コンパイルする際にビルド→サンプルのビルドでエラーや警告が表示されるはずなのですがまったく表示されません。仕方ないのでコンパイルはコマンドプロンプトで行っています。どうしたらよいのでしょうか。

  • CygwinでVisualStudio2005(devenv.exe)起動時、ビルド状況を表示するには?

    CygwinでVisualStudio2005(devenv.exe)起動時、ビルド状況を表示する方法はあるでしょうか? 例えば今、t.sln及びプロジェクト一式(.vcproj .cpp その他)があるとします。それを DOS窓から devenv t.sln /build Debug と打つとデバッグビルドが始まり、ビルド状況 (コンパイルしています...等)も出ます。 が、Cygwinで同じ事をすると、ビルドは同じように完了しますが、ビルド状況が出ませ ん。無言です。> や 2> でリダイレクトしても、出力ファイルは虚無です。 そういう物なのかな と思いましたが、最後のあがきで質問させて頂きました。 どうぞ宜しくお願い致します。 環境:VS2005Pro、WinXP + 全パッチ

  • C#で参照したCOMコンポーネントが動作しない

    VS.NETのVisualC#でアプリケーションの開発を行っているのですが、あるCOMコンポーネント「A」を参照して、その中のメソッドを動作させようとするとFileNotFoundExceptionが発生し、「ファイル名またはアセンブリ名A、またはその依存関係の1つが見つかりませんでした。」というメッセージが出力されてしまいます。「A」は別のCOMコンポーネント「B」を参照していますが、「B」は管理ツールのコンポーネントサービスに登録済みです。なおtlbimpを使用して厳密名はつけてあります。 C#に詳しいかた、いらっしゃいましたらよろしくお願いします。

  • COM相互運用機能のON,OFFによるDLLの差異

    Visual Studio 2010で、VB.NETのクラスライブラリを作成して、.NETとCOMの両方で使用しているのですが以下のことがよく分かりませんので教えてください。 同じプロジェクトのDLLファイルをVB.NETなどから.NET用のDLLとして使っているだけでなく、VBAなどからもCOM用のDLLとして使っているのですが、プログラムに変更があると、COM相互運用機能の登録がONの場合とOFFの場合の両方で2回ビルドして各々のDLLファイルを別に用意して使い分けていました。しかし、先日、COM相互運用機能の登録をONにしてビルドしたDLLでもVB.NETなどから.NET用のDLLとして参照できてしまうことが分かりました。.NET用のDLLとして利用する場合には、COM相互運用機能の登録をON,OFFに関係なくどちらでビルドしたDLLファイルでも使用できるのでしょうか。たまたま今は参照できているだけで将来的には使えなくなる可能性があるので、.NET用のDLLとして使用する場合には、COM相互運用機能の登録をOFFにしてビルドしたDLLを使用するべきなのかがよく分かりません。つまり、下記の(A)と(B)のどちらが正しいのかがよく分かりませんので教えてください。 (A) VB.NETとして使用する場合には、COM相互運用機能の登録をON,OFFに関係なく、どちらでビルドしたDLLファイルでも使用できるが、COMとして利用する場合には、COM相互運用機能の登録をONにして、ビルドして作成したDLLファイル(.dll)とタイプ ライブラリ ファイル(.blt)を使用する。VB.NETとしてもCOMとしても利用する場合には、COM相互運用機能の登録をONの方だけビルドすればよい。 (B) VB.NETとして利用する場合には、COM相互運用機能の登録をOFFしてビルドしたDLLを使用する。COMとして利用する場合には、COM相互運用機能の登録をONにしてビルドして作成したDLLファイル(.dll)とタイプ ライブラリ ファイル(.blt)を使用する。VB.NETとしてもCOMとしても利用する場合には、COM相互運用機能の登録をON,OFFの両方で2度ビルドする必要がある。 なお、(A)が正しい場合にのみ、分かる範囲でいいので教えてほしいのですが、 コードを何も変更しないでビルドしてもDLLファイル(.dll)は更新されませんが、COM相互運用機能の登録のONとOFFを変更するだけでDLLファイル(.dll)は更新されています。COM相互運用機能の登録をONにしてビルドして作成されたDLLファイル(.dll)は、COM相互運用機能の登録をOFFにしてビルドして作成されたDLLファイル(.dll)と何が異なるのでしょうか。 よろしくお願いします。

  • visual C++ ビルド

    visual C++ ビルド 次のソースをビルドしたら、こんなエラーがでてきました。 どこがだめなんでしょうか。 //画面への出力を行うプログラム #include <instream> using namespace std; int main() { cout << "初めてのC++プログラム。\n"; cout << "画面に出力しています。\n"; } ビルド結果 1>------ ビルド開始: プロジェクト: hello, 構成: Debug Win32 ------ 1>コンパイルしています... 1>list1-1.cpp 1>c:\documents and settings\藤本剛史\my documents\visual studio 2008\projects\hello\list1-1.cpp(3) : fatal error C1083: include ファイルを開けません。'instream': No such file or directory 1>ビルドログは "file://c:\Documents and Settings\藤本剛史\My Documents\Visual Studio 2008\Projects\hello\Debug\BuildLog.htm" に保存されました。 1>hello - エラー 1、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ==========

  • warnやdieの出力先を変更したい

    お世話になります。 現在perlを勉強しているのですが(ActivePeal5.12.2) コマンドプロンプトから test.pl > test.log と実行した場合、test.pl内で標準出力した文字列がtest.logにリダイレクトされますが test.pl内で ~die "ERROR~"とした場合、"ERROR~"はtest.logに出力されません。 これを簡単にtest.logに出力する方法はないでしょうか。 リダイレクトせず実行した場合、画面に出力されているのでリダイレクトすればそのまま良いと思っていたのですが・・

    • ベストアンサー
    • Perl
  • ビルド時のエラー

    行列の計算をする関数をいくつか作り、 それをまとめたファイルmatrix.cを作りました。 自作関数の、M_ADD, M_SUBなどが含まれています。 mainのファイルでmatrix.cをインクルードして、 ビルドしようとしたところ、コンパイルはうまくいくのですが、 リンク時にエラーが起こってしまいました。 具体的には、以下のような感じです。 Linking... matrix.obj : error LNK2005: _M_ADD already defined in main.obj matrix.obj : error LNK2005: _M_SUB already defined in main.obj Debug/計算.exe : fatal error LNK1169: one or more multiply defined symbols found Error executing link.exe. already defined と怒られていますが、 ほかの場所でそんな名前の関数を作った覚えはありません。 関数名をいろいろ変えてみてもだめでした。 ウェブサイトを調べてみても、見当たりませんでした。 これはどういうことなのでしょうか? どうすれば解消できるのでしょうか? どなたかわかるかた、教えていただけませんか? よろしくお願いします。 ちなみに、Visual C++ 6.0を使用しています。

  • LtiLibというライブラリのビルド方法について

    LtiLibというライブラリを使ってプログラムを組みたいのですが,少し躓いています. インストールの方法については http://www.eml.hiroshima-u.ac.jp/member/staff/tamaki/LTI-Lib/index.php?install%2Fwindows%2FbuildLibrary%20with%20VC%2B%2B 上記のサイトに従いインストールを行いました. やった事: http://ltilib.sourceforge.net/doc/homepage/index.shtml 公式ページから最新版(1.9.15)のPerl+LtiLibをDLしました. VisualStudio2005コマンドプロンプトを立ち上げVCVARS32.BATを実行しました.(参考サイトと違い,C:\Program Files\Microsoft Visual Studio 8\VC\binにありました) BuildLib.Batがあるフォルダへ移動し,実行しました. すると,ビルドが始まったのですが文法的なエラー(warningでは無く)が何箇所か確認され,結局最後に Error while building debug version!!! Check path for nmake and mspdb60.dll. という表示が出されました. Libフォルダを見てもLibファイルは生成されてないので,ビルドは失敗していると思います. 何が原因なのか全く検討がつかないのですが,原因を誰か分かる範囲で教えてもらえると助かります. 環境: WinXP SP3 VisualStudio 2005 メモリ云々のリソースは関係ないと思います..

  • ビルド失敗 指定されたファイルが見つかりません

    // cout01.cpp #include <iostream> int main() { std::cout << "Hello, World!" << std::end1; return 0; } 1>------ ビルド開始: プロジェクト: sample, 構成: Release Win32 ------ 1>コンパイルしています... 1>sample.cpp 1>.\sample.cpp(6) : error C2039: 'end1' : 'std' のメンバではありません。 1>.\sample.cpp(6) : error C2065: 'end1' : 定義されていない識別子です。 1>ビルドログは "file://c:\Documents and Settings\Owner\My Documents\Visual Studio 2008\Projects\sample\Release\BuildLog.htm" に保存されました。 1>sample - エラー 2、警告 0 ========== ビルド: 0 正常終了、1 失敗、0 更新不要、0 スキップ ========== デバックなしで開始をしたときのメッセージは プログラム C:\Documents and Settings\Owner\My Documents\visual Studio 20008\Projects\sample\Rekease\sample.exe を開始できません。 指定されたファイルが見つかりません ソースはこれだけなのですが、ビルドを何回やっても失敗します。 デバックなしで開始を押しても指定されたファイルが見つかりませんって出てしまい まったくのプログラミング初心者で本を買って家でやってまして、最初はコマンドプロンプトが出て Hello, World!で成功したのですが、その後なにをいじってしまったのかできなくなりました・・・ どなたか助けていただけないでしょうか? お返事お待ちしております。

  • 拾ってきたソースをうまくビルド出来ない

    正確に言うと、ソースの言語がC++なのかC#なのかわかりません。 おそらくC++だろうと思ってるのですが・・・。 #include <stdio.h> #include <string.h> #include <windows.h> int Time[5]={0}; DWORD GetRegInt(LPCTSTR lpszSection, LPCTSTR lpszEntry, DWORD dwDefault) { BOOL bResult = FALSE; DWORD dwBuffer = 0; HKEY hOpenKey; if(RegOpenKeyEx(HKEY_CURRENT_USER, lpszSection, 0, KEY_EXECUTE, &hOpenKey) == ERROR_SUCCESS) { DWORD dwType; DWORD dwBufferSize = sizeof(DWORD); if(RegQueryValueEx(hOpenKey, lpszEntry, 0, &dwType, reinterpret_cast<LPBYTE>(&dwBuffer), &dwBufferSize) == ERROR_SUCCESS) { bResult = TRUE; } RegCloseKey(hOpenKey); } if(!bResult) { dwBuffer = dwDefault; } return dwBuffer; } void GetRegString(LPCTSTR lpszSection, LPCTSTR lpszEntry, LPCTSTR lpszDefault, LPTSTR lpBuffer, DWORD nSize) { BOOL bResult = FALSE; HKEY hOpenKey; if(RegOpenKeyEx(HKEY_LOCAL_MACHINE, lpszSection, 0, KEY_EXECUTE, &hOpenKey) == ERROR_SUCCESS) { DWORD dwType; DWORD dwBufferSize = nSize; if(RegQueryValueEx(hOpenKey, lpszEntry, 0, &dwType, reinterpret_cast<LPBYTE>(lpBuffer), &dwBufferSize) == ERROR_SUCCESS) { bResult = TRUE; } RegCloseKey(hOpenKey); } if(!bResult) { lstrcpyn(lpBuffer, lpszDefault, nSize); } } (文字制限を越えてしまったので、下半分を消しました) とりあえず、なにはともあれ試しにビルドしてみようと思い、bcc55でやってみました。 結果、.exeファイルと、.objともう一つ(名前忘れた)ができて、うまくできたかと思い、起動してみたのですが、DOSが開いてすぐ閉じてしまいます。 元々、このソースは既にビルドされた.exeファイルと一緒にアップロードされてたので、うまくいったらこういう動作をするっていうのは分かってたので、うまくビルドできてないのでしょう・・・。 そこで考えられる原因を考えたら、「言語が違う」これしか思いつきませんでした。 C#なのかもしれないと思い、Microsoft Visual C# Express Editionでも試してみましたが、これもうまくいかず、google先生に頼ってみましたが行き詰ってしまいました。 質問したい点を挙げます。 ・この言語はC++でしょうか?もしくはbcc32でコンパイル可能でしょうか? ・もし不可能な場合、どのコンパイラを使用すればうまくいくでしょうか?(できればフリーソフトでやりたいです)