potuです。いつもお世話になっています。
今回の質問は、「IEのバージョンを取得したい」ことです。
OSが98でも2000でもxpでも、同じように取得できる方法を教えて下さい。
下記のサンプルプログラムでは、2000とxpでは取得できるのですが、
98では取得できないらしいのです。
-----ここから-----
DWORD dwType;
ULONG nSize;
HKEY hKey;
BYTE lpszBuff[20];
dwType = REG_SZ;
nSize = 256;
hKey = NULL;
::RegOpenKeyEx(HKEY_LOCAL_MACHINE
,Software\\Microsoft\\Internet Explorer
,0,KEY_ALL_ACCESS,&hKey);
::RegQueryValueEx(hKey,Version,NULL,&dwType,lpszBuff,&nSize);
-----ここまで-----
環境は、Win2000, VC6.0, MFC使用です。
どなたかご存知でしたら、教えてください。
http://www.microsoft.com/japan/support/kb/articles/JP164/5/39.asp
ここを見る限り、Win98も同様に取得できるようですが。
> 98では取得できないらしいのです。
というのは、確かな情報なのでしょうか?
dairygoodsさんレスありがとうございます。
私のマシンは2000なので、98の人にテストしてもらったところ「dllがない」と表示されたらし
いのです。
dairygoodsさんの教えてくれたHPに「Shdocvw.dllを利用した方法」とありました。
上のサンプルプログラムでは「Shdocvw.dll」を見にいっているのでしょうか?
で、98は指定するフォルダが違うので落ちてる・・・?
うーん・・・。
Releaseバージョンで試していますか?
saraさんレスありがとうございます。
なぜかダメみたいです・・・。 (;_;)
「OSの種類を判別して、それによって指定するフォルダを変える」手法に切り替えてみます。
でも、方法がわからない・・・。勉強します。
レスありがとうございました。
>nSize = 256;
少なくともコレはだめなのでは?
EIJIさんレスありがとうございます。
>>nSize = 256;
>少なくともコレはだめなのでは?
「256」がダメですか?
nSize = sizeof(lpszBuff);
でどうです?
EIJIさんレスありがとうございます。
やはりダメです・・・。m(__)m
OSの識別をして、それにより
::RegOpenKeyEx(HKEY_LOCAL_MACHINE
,Software\\Microsoft\\Internet Explorer ←この部分
,0,KEY_ALL_ACCESS,&hKey);
Software\\Microsoft\\Internet Explorerを、
・2000(そのまま)
Software\\Microsoft\\Internet Explorer
・98
System\\Microsoft\\Internet Explorer
としました。
レスありがとうございました。
> 98の人にテストしてもらったところ「dllがない」と表示されたらし
> いのです。
ここで表示されたDLLファイル名は何ですか?
レス遅くなりました。
「カーネル32」の問題ということです。(-_-;
まったく「Shdocvw.dll」と関係ないですね(汗)
お騒がせしてすみません。
でも、どんなOSでも動くように、(こういったエラーがでないように)
OSを識別する方法をとろうと思います。m(__)m
みなさんのレスに感謝です。