regsetvalueexで値の作成ができません

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hajimete

regsetvalueexで値の作成ができません

#1

投稿記事 by hajimete » 13年前

void func() {
HKEY key=NULL;
int sz=GetModuleFileName(NULL,buf,sizeof(buf))+1;
if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,&key)) {
RegSetValue(key,TEXT("DTCLNR"),REG_SZ,buf,sz*sizeof(TCHAR));
RegCloseKey(key);
}

}
で指定のレジストリキー(Software\\Microsoft\\Windows\\CurrentVersion\\Run)付近をレジストリエディタでみると、
DTCLNRという名の値ではなく DTCLNRというキーが作成されていました。
なぜでしょうか?

hajimete

Re: regsetvalueexで値の作成ができません

#2

投稿記事 by hajimete » 13年前

開発環境は
VC++ 2008
WindowsXP
です。
すみません。いい忘れてました。

アバター
結城
記事: 52
登録日時: 13年前
連絡を取る:

Re: regsetvalueexで値の作成ができません

#3

投稿記事 by 結城 » 13年前

よろしければ状況を把握しにくいのでもう少し付近のコードをください
ANGE;ART

hajimete

Re: regsetvalueexで値の作成ができません

#4

投稿記事 by hajimete » 13年前

全ソースです。

コード:

#include <windows.h>
TCHAR buf[MAX_PATH+1];
void setkey() {
	HKEY key=NULL;
	int sz=GetModuleFileName(NULL,buf,sizeof(buf))+1;
	if(ERROR_SUCCESS == RegOpenKeyEx(HKEY_LOCAL_MACHINE,TEXT("Software\\Microsoft\\Windows\\CurrentVersion\\Run"),REG_OPTION_NON_VOLATILE,KEY_SET_VALUE,&key)) {
		RegSetValue(key,TEXT("DTCLNR"),REG_SZ,buf,sz*sizeof(TCHAR));
		RegCloseKey(key);
	}

}
int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow) {
	setkey();
}

アバター
結城
記事: 52
登録日時: 13年前
連絡を取る:

Re: regsetvalueexで値の作成ができません

#5

投稿記事 by 結城 » 13年前

RegSetValueの第二引数はSubKeyですから、そこに設定するとそのキーが作成されるのではないかと思います
試していないので正しいかどうか分かりませんが
第三引数はDataですのでそちらにTEXT("DTCLNR")を渡してやって
代わりにキーにしたいものを第二引数に入れてやればいいはずです
ANGE;ART

mila

Re: regsetvalueexで値の作成ができません

#6

投稿記事 by mila » 13年前

RegSetValueEx関数を使ってみてください。

hajimete

Re: regsetvalueexで値の作成ができません

#7

投稿記事 by hajimete » 13年前

"RegSetValue"!?
RegSetValueExを使っていたつもりだったのですが...
皆様ありがとうございます。おかげで希望通りの挙動をしました。

hajimete

Re: regsetvalueexで値の作成ができません

#8

投稿記事 by hajimete » 13年前

解決ボタンを忘れていました。
今回の件といい、よく確認したいと思います (_ _)

閉鎖

“C言語何でも質問掲示板” へ戻る