データの受け渡しについて
Posted: 2006年12月11日(月) 12:25
はじめまして。
今、レジストリからデータを参照するプログラムを書いています。
そこで、main()とreg()間のデータがうまくやりとりできません…
ポインタとかの使い方がいまいちよくわからないせいなんですが…
プログラムも下記に載せておくので、もし間違いやおかしい点があればご教授をお願いします。
よろしくお願いします。
・プログラム
#include<windows.h>
#include<iostream>
char* reg(char path){
HKEY rKey;
LONG bRet;
char ValueName[256];
BYTE Data[256];
DWORD cbData;
DWORD dwType;
char d[256];
// レジストリキーハンドルを作成;
bRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
&path,
0, // 予約済み;
KEY_ALL_ACCESS, //キーに対す全ての操作を許可する。;
&rKey); // ここにキーハンドルが格納される。;
if( bRet != ERROR_SUCCESS ){
// 失敗
printf("RegOpenKeyEx");
exit(0);
}
// 値の読み込み;
cbData = sizeof(Data);
memset(Data, 0, cbData);
bRet = RegQueryValueEx( rKey, // オープンしているキーのハンドル;
"ProductName", // 読み取りたい値の名前を指定。;
NULL, //予約済み。NULLをいれること;
&dwType, // 値のデータの種類が入る。今回は不要なので, NULLにする。;
Data, // 情報が格納される。;
&cbData); // 情報のデータサイズ(Byte)を格納する。;
// 渡すときには情報を格納するバッファの大きさを入れておく。
if( bRet != ERROR_SUCCESS ){
// 失敗した。;
printf("RegQueryValueEx\n");
exit(0);
}
RegCloseKey(rKey);
return (char *)Data;
}
int main(){
char path[200]="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
char *regstr;
regstr = reg((char)path);
printf("%s",regstr);
return 0;
}
今、レジストリからデータを参照するプログラムを書いています。
そこで、main()とreg()間のデータがうまくやりとりできません…
ポインタとかの使い方がいまいちよくわからないせいなんですが…
プログラムも下記に載せておくので、もし間違いやおかしい点があればご教授をお願いします。
よろしくお願いします。
・プログラム
#include<windows.h>
#include<iostream>
char* reg(char path){
HKEY rKey;
LONG bRet;
char ValueName[256];
BYTE Data[256];
DWORD cbData;
DWORD dwType;
char d[256];
// レジストリキーハンドルを作成;
bRet = RegOpenKeyEx( HKEY_LOCAL_MACHINE,
&path,
0, // 予約済み;
KEY_ALL_ACCESS, //キーに対す全ての操作を許可する。;
&rKey); // ここにキーハンドルが格納される。;
if( bRet != ERROR_SUCCESS ){
// 失敗
printf("RegOpenKeyEx");
exit(0);
}
// 値の読み込み;
cbData = sizeof(Data);
memset(Data, 0, cbData);
bRet = RegQueryValueEx( rKey, // オープンしているキーのハンドル;
"ProductName", // 読み取りたい値の名前を指定。;
NULL, //予約済み。NULLをいれること;
&dwType, // 値のデータの種類が入る。今回は不要なので, NULLにする。;
Data, // 情報が格納される。;
&cbData); // 情報のデータサイズ(Byte)を格納する。;
// 渡すときには情報を格納するバッファの大きさを入れておく。
if( bRet != ERROR_SUCCESS ){
// 失敗した。;
printf("RegQueryValueEx\n");
exit(0);
}
RegCloseKey(rKey);
return (char *)Data;
}
int main(){
char path[200]="SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion";
char *regstr;
regstr = reg((char)path);
printf("%s",regstr);
return 0;
}