vistaへの移行 – プログラミング – Home

通知
すべてクリア

[解決済] vistaへの移行


あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

vistaへ移行するため、開発環境をVC6.0からvisualStudio2008vc++へ移行し再コンパイ
ルを実行してみました。
しかし、CLSIDFromProgID で必ずエラーになってしまいます。
いろいろ調べると、dll comコンポーネントが登録されていないというエラーです。
ちゃんと、regsvr32.exeで登録確認して再実行しても同じでした。

また。
HRESULT hRes = CoCreateInstance(IID_IRS232_00_RSDrive00, NULL,
CLSCTX_INPROC_SERVER, IID_IRS232_00, (void**)&m_pPortDriveObj);
if (hRes != S_OK)
return hRes;

のようにインスタンス作成箇所をかえてみましたが、同様なエラーとなります。
ちょっとお手上げ状態に陥ってます。どなたかご存じのかたお見えになりませんでしょ
うか?ご教授をお願いできませんでしょうか?
宜しくお願いします。

// RSPort.dll 読み込み
///////////////////////////////////////////////////////////////////////////////
/
CoInitalize(NULL);
     m_pPortDriveObj = 0 ;
IID IID_IRS232_00 = DEFINE_IID_IRS232_00 ;
if ((hr = ::CLSIDFromProgID(LRSPort.RSDrive00, &clsid)) != NOERROR)
{
AfxMessageBox (unable to find Program ID -- error = %x,
hr) ;
return FALSE ;
}
if ((hr = ::CoGetClassObject(clsid, CLSCTX_INPROC_SERVER,
NULL, IID_IClassFactory, (void**) &pClf)) != NOERROR) {
AfxMessageBox (unable to find CLSID -- error = %x, hr) ;
return FALSE ;
}
pClf->CreateInstance(NULL, IID_IUnknown, (void**) &pUnk) ;
pUnk->QueryInterface(IID_IRS232_00, (void**) &m_pPortDriveObj) ;
pClf->Release() ;
pUnk->Release() ;


引用未解決
トピックタグ
あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

追記すみせん、開発環境、実行環境ともにVistaとなっております。


返信引用
あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

従来環境のxpでは問題なく動いております。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

エラーになるのは CoGetClassObject ではなく CLSIDFromProgID なのですね?
エラーコードは何なのですか?


返信引用
あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

早々にコメント頂きありがとうございます。

●CLSIDFromProgID 段階で次のエラーがでます。
hr =
0x800401f3 クラス文字列が無効です”

●そこで、CLSIDFromProgID を使わず、CLSIDを直接与えててたCoGetClassObject を使
用した場合では、次のエラーがでています。
hRes =
0x80040154 クラスが登録されていません

その後の経過:
登録ができていないと出るので、何度もregsvr32.exeを実行させてみますが、変化なし
です。ネットでいろいろ見てみましてそれらしい実験をしてみましたが効果なしでし
た。そこで、参考書のCOMコンポーネントのサンプルを実行してみましたら、それでも同
じエラー状態が出ました。あまり期待できませんが、本屋にいって参考になりそうな資
料もあたってみようと考えています。


返信引用
あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

文章に記述ミスありました。

●そこで、CLSIDFromProgID を使わず、CLSIDを直接与えててたCoGetClassObject を使
用した場合では、次のエラーがでています。
hRes =
0x80040154 クラスが登録されていません

誤:CoGetClassObject -> 正:CoCreateInstance


返信引用
Jason
 Jason
(@Jason)
ゲスト
結合: 16年前
投稿: 26
 

XPでOKが、VISTAのUACに関連があるかも。

以下の案やってみましょう。
VISTAでregsvr32.exeを用いて登録した場合に、regsvr32は管理者権限で起動していますか?
また、VC2008でデバッグする場合、VC2008は管理者権限で起動してやってみましょう。

推断だけです。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

Vista は 32bit 版ですか?


返信引用
あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

Jasonさま、aetosさま コメントありがとうございます。

○管理者権限で起動してます。
○vista homePreminum 32bitです。

その後ネットでみましたが、「COM昇格モニカ」が関係ありそうな気がしてます。
xp版のなにかしらの既存製品で、vistaでの実行でCLSIDFromProgID でエラーが出るなどの
記事もありました。
これはちょっと新たに時間をかけ勉強する必要がありそうな気がしてます。


返信引用
あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

「COM昇格モニカ」関連記事
http://social.msdn.microsoft.com/forums/ja-JP/vcgeneralja/thread/e855fb25-ee88-
4b8f-b57e-d65cc8aa5ef4/


返信引用
あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

Jasonさま、 aetosさま

すみませんでした。していたつもりが管理者状態になっていませんでした。UACを無効に
しましたら動作しました。ありがとうございました。

その後、ネットにあった資料を今後の1資料として貼り付けます。
アプリケーション開発者向け Microsoft® Windows Vista™ 対応 ...
http://download.microsoft.com/download/3/4/4/3448ddf3-ca22-45bd-9984-
1237e8ed0019/Windows_Vista_application_compatibility_paper.doc


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

> していたつもりが管理者状態になっていませんでした。
> UACを無効にしましたら動作しました。

「管理者で実行する」と「UACを無効にする」はまったく別ですので、くれぐれもご注意
を。
regsvr32.exe を管理者モードで実行するのは、
1:スタートメニューの検索ボックスに「regsvr32.exe」と入力
2:検索結果に出てきたら右クリックして「管理者として実行」を選択
です。


返信引用
aetos
(@aetos)
Noble Member
結合: 5年前
投稿: 1480
 

ちょっとこのあたりは、

・regsvr32.exe に対して、レジストリ リダイレクトが有効かどうか
・CLSIDFromProgID がレジストリのどこから値を読もうとしているか
・対象の dll が HKEY_CLASSES_ROOT に書き込むようにしているか、
 HKEY_LOCAL_MACHINE や HKEY_CURRENT_USER に書いていないか

等によっても変わってくるので、難しいところですね。

とりあえず、UAC を無効にせず、regsvr32.exe を管理者権限で実行して、うまくいくか
どうか確かめてみてください。


返信引用
あさいち
 あさいち
(@あさいち)
ゲスト
結合: 16年前
投稿: 9
Topic starter  

aetos さま

アドバイスありがとうございます。
今まで、vistaを横目でみるだけでvistaのPCすら触ろうともしませんでしたが、対応要
求がじはじはとせまって来たという感じです。本格的なvista対応版開発はちょっと骨が
折れそうですね。アドバイスを参考にひとまずの対応がすることが出来ました。続けて
正式な対象のため、しばらく資料あさりがと実験が続きそうです。
VC6.0もそろそろ年貢の納め時なのでしょうか?ようやく使いなれてきたというの
に、、、。


返信引用

返信する

投稿者名

投稿者メールアドレス

タイトル *

プレビュー 0リビジョン 保存しました
共有:
タイトルとURLをコピーしました