slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
阅读:1722回复:6

郁闷啊!怎么调用NtCreateKey老是失败(普通Win32应用)。

楼主#
更多 发布于:2002-11-23 23:28
功能:打开HKLM\\Software,然后在下面建立子键11111222。

第二步操作失败:提示“内存分配访问无效”。

把代码看了又看,还是看不出什么问题。:(

  HINSTANCE hInst;

  hInst                        = GetModuleHandle(\"NtDll.Dll\");
  NtCreateKey                 = (NTCREATEKEY)GetProcAddress(hInst, \"NtCreateKey\");
  NtDeleteKey                 = (NTDELETEKEY)GetProcAddress(hInst,\"NtDeleteKey\");

  ///////
  DWORD dwRet;

  HANDLE hSysKey;
  UNICODE_STRING SysKeyName;
  OBJECT_ATTRIBUTES KeyObj;
  ULONG Disposition;

  UNICODE_STRING SubKeyName;
  HANDLE hSubKey;
  OBJECT_ATTRIBUTES SubKeyObj;

  //
  RtlInitUnicodeString(&SysKeyName,L\"\\\\Registry\\\\Machine\\\\Software\");
  InitializeObjectAttributes(&KeyObj,&SysKeyName,OBJ_CASE_INSENSITIVE,NULL,NULL);

  dwRet = NtCreateKey(&hSysKey,KEY_ALL_ACCESS,&KeyObj,0,NULL,REG_OPTION_NON_VOLATILE,&Disposition);
  if(dwRet != 0)
  {
    MessageBox(NULL,AnsiString(\"Err1 = \" + NtErrorMessage(dwRet)).c_str(),NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
    return;
  }

  RtlInitUnicodeString(&SubKeyName,L\"111122222\");
  InitializeObjectAttributes(&SubKeyObj,&SubKeyName,OBJ_CASE_INSENSITIVE,hSysKey,NULL);

  //操作失败:提示“内存分配访问无效”。
  dwRet = NtCreateKey(&hSubKey,KEY_ALL_ACCESS,&SubKeyObj,0,NULL,REG_OPTION_NON_VOLATILE,&Disposition);
  if(dwRet != 0)
  {
    MessageBox(NULL,AnsiString(\"Err2 = \" + NtErrorMessage(dwRet)).c_str(),NULL,MB_OK | MB_APPLMODAL | MB_ICONWARNING);
    return;
  }
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
沙发#
发布于:2002-11-24 17:29
这是普通win32的代码?
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-11-25 10:16
用ZwCreateKey试试
生命驱动,活力无限!
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-11-25 10:34
用ZwCreateKey试试

=================

一样的结果!:(

顺便说一下,我是根据www.sysinternals.com上面的一个例子写的,那个例子没有问题(我是说那个Exe程序),但是把里边的代码拷贝到我的程序中就有问题!不可思议!


==================================================
这是普通win32的代码?

===========

我是在Win32中编写这段代码的,难道不是Win32应用?
ydyuse
驱动老牛
驱动老牛
  • 注册日期2002-07-25
  • 最后登录2005-03-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-11-25 10:50
请问是哪个例子,我也去看看。
生命驱动,活力无限!
slwqw
驱动大牛
驱动大牛
  • 注册日期2002-07-18
  • 最后登录2016-01-09
  • 粉丝0
  • 关注0
  • 积分7分
  • 威望197点
  • 贡献值0点
  • 好评度147点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-11-25 11:00
http://www.sysinternals.com/ntw2k/info/tips.shtml

“Hidden Registry Keys?”,这个就是。
arthurtu
驱动巨牛
驱动巨牛
  • 注册日期2001-11-08
  • 最后登录2020-12-19
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望161点
  • 贡献值0点
  • 好评度35点
  • 原创分0分
  • 专家分0分
  • 社区居民
6楼#
发布于:2002-11-25 18:36
这是普通win32的代码?

===========

我是在Win32中编写这段代码的,难道不是Win32应用?

不太普通的。 :D
游客

返回顶部