怎样用代码操作注册表呢?

itzhiren 2006-05-26 05:16:21
(1)启动注册表编辑器,打开HKEY_CURRENT_USER\Software\Microsoft\Windows\ CurrentVersion\Policies\Explorer子项。

(2)在Explorer子项中新建一个名为NoTrayContextMenu的双字节值项,并将该值项的数值数据设置为1。


怎样用代码实现以上功能?为什么使用RegCreateKeyEx这个api函数,总是创建的是文件夹呢?怎样创建dword值项?
...全文
140 5 打赏 收藏 举报
写回复
5 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
itzhiren 2006-05-29
哦?无须重启吗?那最好了
  • 打赏
  • 举报
回复
dfwxj 2006-05-28
有一个完整的操作注册表的程序,思路同apple_8180(十豆三),设置后立即生效,无须重启,在网上可以搜索到,我现在电脑里是乱七八糟的,不知道放哪了
  • 打赏
  • 举报
回复
十豆三 2006-05-27
设置值成功了,不过没有重启计算机试,你试一下:



#DEFINE HKEY_CURRENT_USER BITSET(0,31)+1 &&-2147483647
#DEFINE REG_DWORD 4
DECLARE INTEGER RegOpenKey IN Win32API INTEGER nHKey, STRING @cSubKey, INTEGER @nResult
DECLARE INTEGER RegCreateKey IN Win32API INTEGER nHKey, STRING @cSubKey, INTEGER @nResult
DECLARE INTEGER RegSetValueEx IN Win32API INTEGER hKey, STRING lpszValueName, INTEGER dwReserved,INTEGER fdwType, STRING lpbData, INTEGER cbData
cSubKey='Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
nResult=0
IF RegOpenKey(HKEY_CURRENT_USER,@cSubKey,@nResult)#0
RegCreateKey(HKEY_CURRENT_USER,cSubKey,@nResult)
ENDIF
lpbData=CHR(1)+CHR(0)+CHR(0)+CHR(0) &&值为1,禁用任务栏右键菜单
*lpbData=CHR(0)+CHR(0)+CHR(0)+CHR(0) &&值为0,恢复任务栏右键菜单
lpcbData=LEN(lpbData)
RegSetValueEx(nResult,'NoTrayContextMenu',0,REG_DWORD,lpbData,lpcbData)
  • 打赏
  • 举报
回复
itzhiren 2006-05-27
还是不对呢

设置注册表的DWORD值是1的话,应该怎么设置呢?为什么设置成0x00000001总是显示 不正确的DWORD值?
  • 打赏
  • 举报
回复
十豆三 2006-05-26
#DEFINE HKEY_CLASSES_ROOT BITSET(0,31) &&-2147483648
#DEFINE HKEY_CURRENT_USER BITSET(0,31)+1 &&-2147483647
#DEFINE HKEY_LOCAL_MACHINE BITSET(0,31)+2 &&-2147483646
#DEFINE HKEY_USER BITSET(0,31)+3 &&-2147483645
#DEFINE HKEY_CURRENT_CONFIG BITSET(0,31)+5 &&-2147483643
#DEFINE HKEY_DYN_DATA BITSET(0,31)+6 &&-2147483642

* 键值的数据类型:1-字符串,3-二进制,4-整数

#DEFINE REG_SZ 1
#DEFINE REG_BINARY 3
#DEFINE REG_DWORD 4

* 当以下API函数返回0时,操作成功。

DECLARE INTEGER RegOpenKey IN Win32API INTEGER nHKey, STRING @cSubKey, INTEGER @nResult
DECLARE INTEGER RegCreateKey IN Win32API INTEGER nHKey, STRING @cSubKey, INTEGER @nResult
DECLARE INTEGER RegSetValueEx IN Win32API INTEGER hKey, STRING lpszValueName, INTEGER dwReserved,INTEGER fdwType, STRING lpbData, INTEGER cbData
DECLARE INTEGER RegQueryValueEx IN Win32API INTEGER nHKey, STRING lpszValueName, INTEGER dwReserved,INTEGER @lpdwType,STRING @lpbData, INTEGER @lpcbData

* DECLARE Integer RegDeleteKey IN Win32API ;
  * Integer nHKey, String @cSubKey

* DECLARE Integer RegDeleteValue IN Win32API ;
  * Integer nHKey, String cSubKey

* DECLARE Integer RegCloseKey IN Win32API ;
  * Integer nHKey

cSubKey='Software\Microsoft\Windows\CurrentVersion\Policies\Explorer'
nResult=0
IF RegOpenKey(HKEY_CURRENT_USER,@cSubKey,@nResult)#0
RegCreateKey(HKEY_CURRENT_USER,cSubKey,@nResult)
ENDIF

* 在nresult中存放了指向子键“HKEY_CURRENT_USER\Software\lytapp”的长整数值

lpdwType=1
*lpbData=SPACE(256)

lpbData=0x00000001'
lpbData=lpbData+CHR(0)
lpcbData=LEN(lpbData)
?RegSetValueEx(nResult,'NoTrayContextMenu',0,REG_DWORD,lpbData,lpcbData)
  • 打赏
  • 举报
回复
相关推荐
发帖
VFP
加入

2533

社区成员

VFP,是Microsoft公司推出的数据库开发软件,用它来开发数据库,既简单又方便。
社区管理员
  • VFP社区
申请成为版主
帖子事件
创建了帖子
2006-05-26 05:16
社区公告
暂无公告