- 浏览: 174976 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (186)
- [网站分类]4.其他技术区 (93)
- [网站分类]6.转载区(Java技术文章转载, 请注明原文出处) (4)
- [网站分类]3.非技术区 (7)
- [网站分类]1.网站首页原创Java技术区(对首页文章的要求: 原创、高质量、经过认真思考并精心写作。BlogJava管理团队会对首页的文章进行管理。) (28)
- HTML&CSS (0)
- 感悟生活 (4)
- c#(.net) (1)
- [网站分类]2.Java新手区 (32)
- [网站分类]5.提问区(Java方面的技术提问) (1)
- java (6)
- web前端 (7)
- php (0)
- C++ (1)
- python (0)
- 互联网应用 (0)
最新评论
-
lliiqiang:
请求单线程资源只能等待结果.
Applet 与JS通信 -
feng2qin:
期待你的精彩回到。QQ:864479410
Applet 与JS通信 -
feng2qin:
我想问一句;哥们儿,applet程序中调用js,你真的成功了嘛 ...
Applet 与JS通信 -
lyaixsp:
...
ExtJS 入门学习之 window与panel篇 -
longzijian:
不知道 java-he 现在找到数组的这种特性 的原因在那里
和网友关于javascript数组的讨论
Win 95及NT的注册数据库(Registry)是系统中非常重要的组成部分。在Win32 API中有一组Reg函数来处理这些问题。其一般的读写过程如下:
1、使用RegOpenKeyEx或RegCreateKeyEx函数打开或创建一个键;
2、如果上一步成功,使用RegQueryValueEx读取子键的值,使用RegSetValueEx设置子键值,使用RegEnumKey获得所有子键,使用RegDeleteKey删除一个键;
3、完成操作后使用RegCloseKey关闭键。
下面这段程序打开HKEY_CURRENT_USER\Software\Zeal SoftStudio\AskPro FTP\LastTime键,然后读取WOL子键的值。
HKEY hkey;
char sz[256];
DWORD dwtype, sl = 256;
RegOpenKeyEx(HKEY_CURRENT_USER,
"Software\\Zeal SoftStudio\\AskPro FTP\\LastTime",
NULL, KEY_ALL_ACCESS, &hkey);
RegQueryValueEx(hkey, "WOL", NULL, &dwtype, (LPBYTE)sz, &sl);
RegCloseKey(hkey);
MFC程序可以使用CRegKey类读写注册表。VB中调用API的办法可以参考QA000226 "如何访问Windows系统注册表"。
打开注册键
LONG RegOpenKeyEx( HKEY hKey, // handle to open key
LPCTSTR lpSubKey, // address of name of subkey to open
DWORD ulOptions, // reserved =0
REGSAM samDesired, // security access mask
PHKEY phkResult // address of handle to open key
);
例:
HKEY hd;
hd=HKEY_LOCAL_MACHINE;
char* Regkeyname="SoftWare\\Xy123\\Poker\\";
LONG a=RegOpenKeyEx(hd,Regkeyname,0,KEY_READ,&hd); //成功返回ERROR_SUCCESS,否则返回错误代码
关闭注册键
LONG RegCloseKey( HKEY hKey // handle to key to close );
例:
RegCloseKey(HKEY_LOCAL_MACHINE);
OR: RegCloseKey(hd);
建立注册键
LONG RegCreateKeyEx( HKEY hKey, // handle to an open key
LPCTSTR lpSubKey, // address of subkey name
DWORD Reserved, // reserved =0
LPTSTR lpClass, // address of class string
DWORD dwOptions, // special options flag
REGSAM samDesired, // desired security access
LPSECURITY_ATTRIBUTES lpSecurityAttributes, // address of key security structure
PHKEY phkResult, // address of buffer for opened handle
LPDWORD lpdwDisposition // address of disposition value buffer );
例:
char *sclass=""; //类名指定为空
DWORD nbf=0; //接受返回值,指明是建立新键还是打开已有的键.(经试验总是返回REG_OPENED_EXISTING_KEY.
LONG II=RegCreateKeyEx(hd,Regkeyname,0,sclass,REG_OPTION_NON_VOLATILE,
KEY_READ|KEY_WRITE,NULL,&hd,&nbf);
//REG_OPTION_NON_VOLATILE 指明键永久保留.安全结构指明NULL,自动获得一默认值
//成功返回ERROR_SUCCESS,否则返回错误代码
枚举键值
LONG RegEnumValue( HKEY hKey, // handle to key to query
DWORD dwIndex, // index of value to query
LPTSTR lpValueName, // address of buffer for value string
LPDWORD lpcbValueName, // address for size of value buffer
LPDWORD lpReserved, // reserved =NULL
LPDWORD lpType, // address of buffer for type code
LPBYTE lpData, // address of buffer for value data
LPDWORD lpcbData // address for size of data buffer);
例:
DWORD dinx=0;
char valuename[70]; //分配数值名称缓冲区
strcpy(valuename,"DeskPattern"); //随便指定哪个键值名
DWORD nsize=69; //数值名称缓冲区大小
DWORD k=REG_SZ; //指明数据类型
unsigned char vari[70]; //分配数值缓冲区
DWORD ncbvari=69; //数值缓冲区大小
dinx=0; //从0开始
while((II=RegEnumValue(hd,dinx,valuename,&nsize,NULL,&k,vari,&ncbvari))
!= ERROR_NO_MORE_ITEMS)
{
dinx++;//索引 +1,准备取下一个值
nsize=69; //恢复原来大小
ncbvari=69;
}
成功后返回值0,各变量返回后设置如下:
valuename=数值名称,以0结尾;如 : DeskColor
nsize=数值名称长度, 9
k=REG_SZ DeskColor 的类型为 REG_SZ
vari=键值,32768 DeskColor="32768",
ncbvari=键值长度 REG_SZ包括结尾0,=6,
读取键值
LONG RegQueryValueEx( HKEY hKey, // handle to key to query
LPTSTR lpValueName, // address of name of value to query
LPDWORD lpReserved, // reserved
LPDWORD lpType, // address of buffer for value type
LPBYTE lpData, // address of data buffer
LPDWORD lpcbData // address of data buffer size );
例:
RegQueryValueEx(hd,valuename,NULL,&k,vari,&ncbvari);
变量定义及成功后各变量设置值同RegEnumValueEx
写键值
LONG RegSetValueEx( HKEY hKey, // handle to key to set value for
LPCTSTR lpValueName, // name of the value to set
DWORD Reserved, // reserved
DWORD dwType, // flag for value type
CONST BYTE *lpData, // address of value data
DWORD cbData // size of value data );
例:
strcpy(valuename,"Hello");
unsigned char vari[10];
DWORD k=REG_SZ;
strcpy((char*)vari,"1234567")
RegSetValueEx(hd,valuename,0,k,vari,7);
成功后在Poker下增加一个键值 Hello : REG_SZ : 1234567
写整型变量:
int hi=8;
RegSetValueEx(pj,valuename,0,REG_BINARY,(unsigned char*)&hi,sizeof(int));
成功后在Poker下增加一个键值 Hello2 : REG_BINARY :08 00 00 00
void AddEventSource()
{
HKEY hk;
DWORD dwData;
UCHAR szBuf[80];
// Add your source name as a subkey under the Application
// key in the EventLog registry key.
if (RegCreateKey(HKEY_LOCAL_MACHINE,
"SYSTEM\\CurrentControlSet\\Services\
\\EventLog\\Application\\SamplApp", &hk))
ErrorExit("Could not create the registry key.");
// Set the name of the message file.
strcpy(szBuf, "%SystemRoot%\\System\\SamplApp.dll");
// Add the name to the EventMessageFile subkey.
if (RegSetValueEx(hk, // subkey handle
"EventMessageFile", // value name
0, // must be zero
REG_EXPAND_SZ, // value type
(LPBYTE) szBuf, // pointer to value data
strlen(szBuf) + 1)) // length of value data
ErrorExit("Could not set the event message file.");
// Set the supported event types in the TypesSupported subkey.
dwData = EVENTLOG_ERROR_TYPE | EVENTLOG_WARNING_TYPE |
EVENTLOG_INFORMATION_TYPE;
if (RegSetValueEx(hk, // subkey handle
"TypesSupported", // value name
0, // must be zero
REG_DWORD, // value type
(LPBYTE) &dwData, // pointer to value data
sizeof(DWORD))) // length of value data
ErrorExit("Could not set the supported types.");
RegCloseKey(hk);
}
以下代码把注册表自启动shell的键值改写为C:\DK1\ATM\HARP\ExAtmShell.exe:
HKEY hkey;
LONG res;
DWORD datatype=REG_SZ;
unsigned char szvalue[_MAX_PATH];
strcpy((char*)szvalue,"C:\\DK1\\ATM\\HARP\\ExAtmShell.exe");
res =::RegOpenKeyEx(HKEY_LOCAL_MACHINE,
"SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Winlogon\\", 0,
KEY_WRITE|KEY_READ, &hkey);
if(res!=ERROR_SUCCESS)
{
AfxMessageBox("aaa");
return;
}
res = ::RegSetValueEx(hkey, "Shell", 0, datatype, szvalue, strlen(LPCSTR(szvalue)));
RegCloseKey(hkey);
if(res==ERROR_SUCCESS)
::AfxMessageBox("你已经成功地将注册表自启动shell的键值设置为C:\\DK1\\ATM\\HARP\\ExAtmShell.exe");
else
::AfxMessageBox("设定失败:目标位置不存在这样的键!");
发表评论
-
图象缓冲
2007-02-07 09:45 771图象缓冲的应用双缓冲绘图:<!--<br>& ... -
检验邮箱
2007-02-08 09:46 802<!--<br><br> ... -
批处理命令总结
2007-02-08 16:52 714批处理命令总结:@ 符号后 的命 ... -
学习UML笔记
2007-02-27 17:30 771学习 UML 笔记 前言 为了自己能快速将 UML ... -
blog加上一个同页面浏览者聊天室代码
2007-05-23 10:17 732都是用的别人提供的服务。哈哈。<script type= ... -
常见网页技巧
2007-06-10 16:32 5751.鼠标移动上去,图片变亮,移开又变成灰色。改变的是透明度。 ... -
javascript 数组排序
2007-07-01 03:16 735javascript 数组排序发现一个我原来不知道的事情: ... -
javascript 在客户端绘制图表系列三——xy坐标曲线图
2007-07-01 04:31 1347系列1、2中介绍过的内容在这里不会赘述。原理同面1、2基本一样 ... -
搭建php的运行环境
2007-07-31 18:50 904配置 php 环境 ... -
从网页导出excel
2007-08-09 21:36 745<?xml:namespace ... -
简单日期下拉框
2007-08-09 22:13 854项目中用到一个级联、动态下拉选择日期框。我以前也收集 ... -
php学习笔记1
2007-08-22 22:36 826前面总结过 ... -
php学习笔记2
2007-08-23 23:33 733主要内容:总结了第四章,主要关于字符串处理。参考书籍 ... -
分享一个表格排序程序
2007-08-23 23:46 672应广大网友要求特此分享一个表格排序的程序。有问题,欢迎留言(虽 ... -
AJAX愉快之旅——prototype.js篇
2007-08-24 09:53 611AJAX ... -
Javascript 事件转移
2007-09-19 08:52 749我遇到的Javascript 现 ... -
网页打印脚本
2007-09-19 08:55 1589<html><head><sty ... -
记录访问者IP
2007-09-19 10:46 855<?php //文件名字 $filename = &q ... -
JAVASCRIPT COOKIE初级指南
2007-12-23 23:43 6821、设置COOKIE数据: 最 ... -
PHP读取4种配置文件(php,ini,yaml,xml)
2007-12-23 23:49 873<?php/*** 读取4中配置的表信息,现支持php. ...
相关推荐
本文将详细讲解如何使用VC++通过API调用来实现注册表的读写操作。 首先,我们需要了解Windows API中的几个关键函数,它们用于对注册表进行读取、写入和查询: 1. **RegOpenKeyEx**:此函数用于打开已存在的注册表...
本资源提供了两个使用`VC6`进行读写注册表操作的工程源码,帮助开发者理解并掌握这一技术。 首先,让我们了解一下如何在`C++`中直接操作注册表。在Windows API中,`RegOpenKeyEx`函数用于打开已存在的注册表键,`...
"读写注册表"这个话题涉及到如何通过编程接口(API)或专门的工具来对注册表进行读取、创建、修改和删除等操作。 首先,我们可以通过API函数来访问注册表。在Windows API中,有一些核心函数如`RegOpenKeyEx`用于...
本示例"vc读写注册表操作.rar"是使用VC6.0编译器实现的一个简单项目,它展示了如何通过C++代码进行注册表的创建、读取和写入操作。 首先,我们来看一下注册表的基本结构。注册表主要包含以下几个主要部分: 1. HKEY...
接下来,我们将深入探讨“VC-读写 注册表+ini+xml”这个主题。 首先,我们来看注册表。注册表是Windows操作系统中的核心数据库,用于存储系统和应用程序的配置信息。在C++编程中,使用Visual C++(简称VC)可以方便...
主要讲述了vc中队注册表的读写操作,里面有具体的函数以及实现方法
本程序适合vc初学者学习使用,软件实现鼠标位置的获取,屏幕大小的获取,鼠标指定位置单击,单击间隔和次数可以设置,定时器的使用,这是一个对话框程序,实现了托盘、气泡、读写注册表,系统热键的使用等等 在vc60...
这个“C++ 读取注册表VS2010 demo”是一个示例项目,它演示了如何在Visual Studio 2010环境下使用C++语言来读取Windows注册表。这个项目不仅提供了读取注册表键值的功能,还包含了字符串类型转换的接口,以便于在...
通过VC6,我们可以方便地进行注册表读写操作,实现对用户设置的存储和检索。理解这些API函数的工作原理和用法,对于开发需要持久化存储数据的Windows应用程序至关重要。在实际项目中,你可能会遇到更复杂的注册表...
在Windows操作系统中,注册表是存储系统和应用程序...总的来说,"VC注册表操作类"是VC++开发Windows应用程序时处理注册表信息的一个强大工具,它简化了注册表的读写操作,使得开发者能够更专注于应用程序的核心逻辑。
本教程“玩转注册表(VC2008 MFC 注册表操作)”专注于利用Microsoft Visual Studio 2008中的MFC(Microsoft Foundation Classes)库进行注册表的读写操作,帮助开发者更好地理解和控制Windows系统。 MFC是微软为C++...
在Microsoft Visual C++ 6.0(简称VC6.0)环境下,开发Windows应用程序时,有时需要对系统注册表进行读写操作。注册表是Windows操作系统用来存储配置信息的重要数据库,包括软件设置、硬件配置等。`Registry.cpp` 和...
VC 向注册表中写入软件信息,一个成熟软件是不可能不操作注册表的,注册表是系统查找软件信息的数据库,如果操作这个数据库读写信息,或许你会从本VC 代码中找到答案。
这个"VC注册表编辑器源码"是一个专门针对Windows操作系统注册表进行读写操作的程序,对于学习Windows API调用、注册表操作以及VC++编程技巧具有很高的学习价值。 注册表是Windows系统的核心组成部分,存储着系统和...
总之,VC++读写注册表是软件开发中的常见需求,通过理解和应用提供的API或MFC类,开发者可以有效地管理应用程序的配置和状态。通过学习和实践资源中的源代码,你将能够熟练地在自己的项目中运用这些技术。
总结起来,"vc注册表操作封装类"是一个方便VC++程序员操作Windows注册表的工具,它提供了丰富的接口来执行常见的读写、创建、删除操作,同时通过类的封装降低了操作复杂性和潜在风险。`Registry.cpp`和`Registry.h`...
本篇文章将深入探讨如何在VS2008下使用C++进行注册表操作,包括读取、写入、删除注册表项和键值,以及如何实现程序随系统启动。 首先,了解Windows API函数是关键。Windows API提供了几个函数来操作注册表,如`...
总的来说,这个“强制改回主页(VC写,是学注册表操作的好资料)”是一个实践性的教学资源,旨在教授如何使用Visual C++编程语言和Windows API来读写注册表,尤其是与浏览器主页和启动项相关的部分。学习者通过分析和...
总的来说,这个"VC封装的注册表操作类"是针对Windows平台开发的一个实用工具,它使得VC++程序员在处理与注册表相关的任务时,能够更加高效、可靠。通过学习和使用此类,开发者可以更好地理解和控制系统的配置,从而...
在Windows操作系统中,注册表是系统用来存储配置信息的关键数据库,包括硬件设备、软件应用程序、...通过这样的类,开发者可以更安全、高效地对注册表进行读写操作,从而实现对系统设置的管理和程序配置的持久化存储。