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というキーが作成されていました。
なぜでしょうか?
regsetvalueexで値の作成ができません
Re: regsetvalueexで値の作成ができません
全ソースです。
#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();
}
Re: regsetvalueexで値の作成ができません
RegSetValueの第二引数はSubKeyですから、そこに設定するとそのキーが作成されるのではないかと思います
試していないので正しいかどうか分かりませんが
第三引数はDataですのでそちらにTEXT("DTCLNR")を渡してやって
代わりにキーにしたいものを第二引数に入れてやればいいはずです
試していないので正しいかどうか分かりませんが
第三引数はDataですのでそちらにTEXT("DTCLNR")を渡してやって
代わりにキーにしたいものを第二引数に入れてやればいいはずです
ANGE;ART
Re: regsetvalueexで値の作成ができません
"RegSetValue"!?
RegSetValueExを使っていたつもりだったのですが...
皆様ありがとうございます。おかげで希望通りの挙動をしました。
RegSetValueExを使っていたつもりだったのですが...
皆様ありがとうございます。おかげで希望通りの挙動をしました。