首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

怎么使用注册表API修改某一键值

2012-03-30 
如何使用注册表API修改某一键值? - C++ Builder / Windows SDK/API我想直接添加一个自启动的程序,怎么老出

如何使用注册表API修改某一键值? - C++ Builder / Windows SDK/API
我想直接添加一个自启动的程序,怎么老出错啊?

谢谢各位先。

实例代码如下:

  HKEY hKey;

  DWORD lpType;
  /*注册表键的类型
  REG_NONE =0;
  REG_SZ =1;字符串
  REG_EXPAND_SZ =2;可展开式字符串
  REG_BINARY =3;
  REG_DWORD =4;
  REG_DWORD_BIG_ENDIAN =5;
  REG_MULTI_SZ =7;多重字符串
  */
  LPBYTE lpData = new BYTE[MAX_PATH];
  DWORD lpcbData = MAX_PATH;

  LONG Flag;

  AnsiString N,NN;

  N = "FirstRun";
  NN = "A" + N + "A";

  NN[1] = char('"');//为了修改成"
  NN[13] = char('"');


  //如果该项存在,就打开,如果不存在就创建。
  Flag = RegCreateKey(HKEY_LOCAL_MACHINE,"SOFTWARE\\Microsoft\\windows\\currentversion\\run",&hKey);

  if (Flag == 0)
  {
//我这里,不管原来有没有,这次都添加或者更新

  lpType = 1;
  Flag = RegSetValue(hKey,N.c_str(),lpType,NN.c_str(),NN.Length());
  if (Flag == 0)
  {
...//成功
  }
  }

  //关闭键
  RegCloseKey(hKey);

这样老在RUN下又创建了一个子项,在他的子项的“默认”中,有数据。

如果我把 第二个参数 N.c_str() 改为"",就是在run下的“默认”中,有数据。

我想在run下,有自己的项。

谢谢啦!

说明啊,不适用VCL控件的,就是用API的啊!

[解决办法]

C/C++ code
#include <tchar.h>void __fastcall TForm1::Button1Click(TObject *Sender){    HKEY hk;    TCHAR szPath[] = TEXT("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Run");    TCHAR szText[] = TEXT("测试哈哈");    if (::RegOpenKey(HKEY_LOCAL_MACHINE, szPath, &hk) == ERROR_SUCCESS)    {        ::RegSetValueEx(hk, TEXT(""), NULL,                REG_SZ, szText, _tcslen(szText));    }    ::RegCloseKey(hk);} 

热点排行