win32 访问注册表

BOOL InitTestDlgCtrl(HWND hdlg)
{

#ifdef WIN64X
LRESULT dwPrinterNameIdx;
#else
DWORD dwPrinterNameIdx;
#endif

#ifdef WIN64X
LRESULT dwGroupNameIdx;
#else
DWORD dwGroupNameIdx;
#endif

HKEY hKey;
HKEY subHKey;
HKEY groupKey;
LONG lnStatus;
TCHAR achKey[MAX_KEY_LENGTH]; // buffer for subkey name
DWORD cbName; // size of name string
TCHAR achClass[MAX_PATH] = TEXT(""); // buffer for class name
DWORD cchClassName = MAX_PATH; // size of class string
DWORD cSubKeys=0; // number of subkeys
DWORD cbMaxSubKey; // longest subkey size
DWORD cchMaxClass; // longest class string
DWORD cValues; // number of values for key
DWORD cchMaxValue; // longest value name
DWORD cbMaxValueData; // longest value data
DWORD cbSecurityDescriptor; // size of security descriptor
FILETIME ftLastWriteTime; // last write time

DWORD i, retCode;
DWORD dwSize; // サイズ

CHAR finalPrinterPath[MAX_PATH] = REG_PRINTERPATH; // REG_PRINTERPATH
CHAR logicalName[MAX_PATH];
DWORD groupSW;
CHAR groupName[8] = "Group";
CHAR number[3];

/*-----------------------------------------------------------------------*/
/* キーオープン
/*-----------------------------------------------------------------------*/
lnStatus = RegOpenKeyEx( HKEY_LOCAL_MACHINE, REG_PRINTERPATH, 0, KEY_ALL_ACCESS, &hKey );
// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

dwSize = MAX_PATH;

// Get the class name and the value count.
retCode = RegQueryInfoKey(
hKey, // key handle
achClass, // buffer for class name
&cchClassName, // size of class string
NULL, // reserved
&cSubKeys, // number of subkeys
&cbMaxSubKey, // longest subkey size
&cchMaxClass, // longest class string
&cValues, // number of values for this key
&cchMaxValue, // longest value name
&cbMaxValueData, // longest value data
&cbSecurityDescriptor, // security descriptor
&ftLastWriteTime); // last write time

if (cSubKeys) {

for ( i=0; i < cSubKeys; i++ )
{
cbName = MAX_KEY_LENGTH;
retCode = RegEnumKeyEx(hKey, i,
achKey,
&cbName,
NULL,
NULL,
NULL,
&ftLastWriteTime);
if (retCode == ERROR_SUCCESS)
{
strcat_s(finalPrinterPath, MAX_PATH , achKey);
PathAddBackslash(finalPrinterPath);

lnStatus = RegOpenKeyEx( HKEY_LOCAL_MACHINE, finalPrinterPath, 0, KEY_QUERY_VALUE, &subHKey );

if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

lnStatus = RegQueryValueEx( subHKey, REG_LOGICALNAME, NULL, NULL, (LPBYTE)&logicalName, &dwSize );


if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_ADDSTRING, 0, (LPARAM)logicalName);
RegCloseKey( subHKey );
memset(finalPrinterPath, 0x00, MAX_PATH);
wsprintf(finalPrinterPath,REG_PRINTERPATH);
}
}

}

RegCloseKey(hKey);

lnStatus = RegOpenKeyEx( HKEY_LOCAL_MACHINE, REG_PRINTERGROUPPATH, 0, KEY_QUERY_VALUE, &groupKey );

// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

lnStatus = RegQueryValueEx( groupKey, REG_GROUPSW, NULL, NULL, (LPBYTE)&groupSW, &dwSize );

// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

for( i = 0;i < 32;i++ )
{
DWORD temp = 1;
temp = temp << i;
temp = groupSW & temp;
if(temp != 0){
itoa(i, number, 10);
strcat(groupName, number);
SendDlgItemMessage(hdlg, IDC_COMBO2, CB_ADDSTRING, 0, (LPARAM)groupName);
memset(number, 0x00, 3);
memset(groupName, 0x00, 8);
wsprintf(groupName,"Group");
}
}

RegCloseKey(groupKey);

if(guiFirstSet == FN2_FAST_ACCSESS){

SendDlgItemMessage( hdlg, IDC_LOGICALNAME, CB_SETCURSEL, 0, 0);
SendDlgItemMessage( hdlg, IDC_COMBO2, CB_SETCURSEL, 0, 0);

dwPrinterNameIdx = SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_GETCURSEL, 0, 0);
SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_GETLBTEXT, dwPrinterNameIdx, gPrinterName);

dwGroupNameIdx = SendDlgItemMessage(hdlg, IDC_COMBO2, CB_GETCURSEL, 0, 0);
SendDlgItemMessage(hdlg, IDC_COMBO2, CB_GETLBTEXT, dwGroupNameIdx, gPrinterGroup);

gFormPrintFlag = FALSE;
gJobFlag = FALSE;

guiFirstSet = FN2_NOTFAST_ACCSESS;

}else{

SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_SELECTSTRING , -1, gPrinterName);
SendDlgItemMessage(hdlg, IDC_COMBO2, CB_SELECTSTRING , -1, gPrinterGroup);

if(gFormPrintFlag) {
SendDlgItemMessage( hdlg, IDC_CHECK1, BM_SETCHECK, BST_CHECKED, 0 );
}else {
SendDlgItemMessage( hdlg, IDC_CHECK1, BM_SETCHECK, BST_UNCHECKED, 0 );
}

if(gJobFlag) {
SendDlgItemMessage( hdlg, IDC_CHECK2, BM_SETCHECK, BST_CHECKED, 0 );
}else {
SendDlgItemMessage( hdlg, IDC_CHECK2, BM_SETCHECK, BST_UNCHECKED, 0 );
}

}


return TRUE;
}

BOOL TestPrint(HWND hdlg)
{
#ifdef WIN64X
LRESULT dwPrinterNameIdx;
#else
DWORD dwPrinterNameIdx;
#endif

#ifdef WIN64X
LRESULT dwGroupNameIdx;
#else
DWORD dwGroupNameIdx;
#endif


HKEY hKey; // レジストリキーハンドル
LONG lnStatus; // ステータス
CHAR productName[21];
DWORD dwSize; // サイズ

/*-----------------------------------------------------------------------*/
/* キーオープン
/*-----------------------------------------------------------------------*/
lnStatus = RegOpenKeyEx( HKEY_LOCAL_MACHINE, REG_PRODUCTNAMEPATH, 0, KEY_QUERY_VALUE, &hKey );
// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

dwSize = sizeof( productName );

lnStatus = RegQueryValueEx( hKey, REG_PRODUCTNAME, NULL, NULL, (LPBYTE)&productName, &dwSize );

// エラーチェック
if( lnStatus != ERROR_SUCCESS ){
return( FALSE );
}

dwPrinterNameIdx = SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_GETCURSEL, 0, 0);
SendDlgItemMessage(hdlg, IDC_LOGICALNAME, CB_GETLBTEXT, dwPrinterNameIdx, gPrinterName);

dwGroupNameIdx = SendDlgItemMessage(hdlg, IDC_COMBO2, CB_GETCURSEL, 0, 0);
SendDlgItemMessage(hdlg, IDC_COMBO2, CB_GETLBTEXT, dwGroupNameIdx, gPrinterGroup);

if(SendDlgItemMessage( hdlg, IDC_CHECK1, BM_GETCHECK, 0, 0 )){
gFormPrintFlag = TRUE;
}else{
gFormPrintFlag = FALSE;
}

if(SendDlgItemMessage( hdlg, IDC_CHECK2, BM_GETCHECK, 0, 0 )){
gJobFlag = TRUE;
}else{
gJobFlag = FALSE;
}

return TRUE;
}
C#中使用Win32 API实现注册表监控的指南 Win32 API(Windows 32位应用程序接口)是微软公司为软件开发者提供的编程接口,用于与Windows操作系统交互。API提供了丰富的函数,允许开发者控制系统的各个方面,从显示窗口到访问硬件资源。本章我们将对Win32 API进行一个基本的介绍,为理解后续章节中如何利用这些API进行注册表操作奠定基础。Win32 API的使用涉及对函数、参数、数据类型和常量的深入理解。它提供了一种直接与Windows操作系统进行交互的方式,是许多系统级应用和高级编程的基础。 阅读详情

相关推荐

win32读写注册表

WIn32读写注册表,读写注册表的方式,直接拷贝即可

windows32位程序访问64位注册表

一开始以为关闭32位程序在64位系统里的重定向就可以了 判断系统是不是64位的 BOOL isSystem64(){ SYSTEM_INFO si; GetNativeSystemInfo(&si); if (si.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 || si.wProcessorArchitecture != PROCESSOR_ARCHITECTURE_IA64 ) { return TRUE;

youyudexiaowangzi的专栏 947

Revit获取族预览图

最近做到和族库相关的功能需要获取到族文件的预览图,在RevitAPI中提供了ElementType.GetPreviewImage方法,但是前提就是你是在Revit里面操作的,并且已经拿到了Symbol对象实例,才可以调用此方法。然后在网上找了另外一种方式,通过读取Revit文件,在REVITPREVIEW4.0字段截取文件信息,将其转换为图片格式。 一、使用RevitAPI中ElementType.GetPreviewImage方法 [Autodesk.Revit.Attributes.Transac.

weixin_44631419的博客 1757

Win32编程3-注册表读取,创建,修改

创建窗口原理与上述也一致,页面排版就不多说了,就是CreateWindow函数反复使用,在创建新窗口前会调用QueryRegValue查询键值名称,类型和值,具体解释都在注释里,这里不多叙述,DWORD类型是最简单的,就没写注释,每一种类型都是通过RegGetValue先获取值的大小,然后在读取值并用对应类型接收,最后转为CString类型,并赋值给r,这是全局CString。至此读取,创建,修改注册表的内容就结束了,上述操作经过测试都是可用的,但没有做太多的非法输入处理,主要是懒,而且也用不上。

qq_16119139的博客 933

ATGM332D模块串口配置保姆级教程:从9600波特率到NMEA数据过滤,一次搞定

本文提供ATGM332D模块串口配置的详细教程,涵盖从基础硬件连接到高级NMEA数据过滤的全过程。内容包括波特率优化、数据输出频率调整、NMEA语句过滤等实用技巧,帮助开发者快速掌握GNSS模块配置,提升定位系统性能。

weixin_30664051的博客 513

Multisim 14.0实战:从零搭建可调幅多波形信号发生器(附仿真文件)

本文详细介绍了如何在Multisim 14.0中从零搭建一个可调幅多波形信号发生器,涵盖方波、三角波和正弦波的生成原理与实现步骤。通过核心电路架构解析、关键参数设计及Multisim实战操作,帮助电子工程学习者和硬件工程师掌握信号发生器的设计与调试技巧,并提供仿真文件供实践验证。

nokia的博客 1073

注册表操作(Win32, C++)

以下为简单的封装操作, 常用的注册表操作做了简化操作, 使用例子写在 main.cpp 中, 具体 注册表api 用法可以参考msdn中的详情.

FlameCyclone的博客 950

MATPOWER下载安装教程

将MATPOWER文件复制在C:\Program Files (x86)\MATLAB\R2016b\bin目录下。原来的窗口中多了很多文件路径,点击【保存】,再点击【关闭】选择所要添加的MATPOWER文件夹,点击【选择文件夹】二、将MATPOWER放在bin目录下。找到菜单栏的【设置路径】点击【添加并包含子文件】一、从官网下载后解压。

weixin_47365903的博客 2万+

Win32编程之注册表的相关操作(十四)

/ 打开注册表项 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion。函数是 Windows API 中的一个函数,用于打开注册表中的一个指定注册表项的句柄。函数用于设置或创建注册表中指定键的值。通过该函数,您可以检索注册表项中的字符串、二进制数据、整数值等不同类型的数据。通过该函数,您可以删除注册表中的一个值,以清除不再需要的注册表数据。HKEY hKey, // 指定一个打开的注册表项的句柄。

1299

2025华为OD 面试手撕代码真题【字符串至多删除一个字符,是否能构成回文串】

2025华为OD 面试手撕代码真题【字符串至多删除一个字符,是否能构成回文串】

MISAYAONE的博客 1707

FPGA/IC秋招经典100题(含详解)

FPGA/IC秋招笔试面试经典100题(含答案及详解),持续更新。。。

Crazzy_M的博客 1万+

【WIN32】WIN32注册表相关

如果函数失败,则返回值为 Winerror.h 中定义的非零错误代码。如果函数成功,则返回值为 ERROR_SUCCESS。

Joeyshaw的博客 306

用群辉NAS打造影视墙(Jellyfin篇)

之前的文章提到过,用群辉NAS组建影视播放系统可以采用官方提供的Video Station套件,不过影视信息配比较差,响应速度也欠佳,今天我们就聊聊别的套件。在影音媒体方面,常见的还有Emby、Plex、Jellyfin。本文主讲Jellfin的原因是它胜在免费,而且功能比较齐全,完全够用。详细信息可以参考Jellyfin的官网:https://jellyfin.org/

dgnankai的专栏 7323

python更改注册表被拒绝访问win32api.RegSetValueEx

更改注册表被拒绝访问,提示 pywintypes.error: (5, 'RegSetValueEx', '拒绝访问。')

qq_25394697的博客 2641

SolidWorks速成教程P3-6【零件 | 第六节】——草图封闭轮廓&所选轮廓&厚度为零的报错

到这里,我们已经将特征成型的常用功能学完。这节我来继续讲解一下 SolidWorks中建模的一些容易忽略的问题(草图封闭轮廓&所选轮廓&厚度为零的报错)。

嵌入式阿齐Archie 5780

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

java访问WIN32注册表

前言:最近的一个任务中,是在插件开发完成WIN32注册表的访问,现将其总结一下。我尝试了两种方法,一种是,通过 (JSR 10)为 Java 1.4 增加的 java.util.prefs 包。还有一种是cdt里面提供的用:cmd命令:“regedit /ea Temp.txt HKEY_LOCAL_MACHINE/SOFTWARE/Elastos/XDK1.0/”一,java.util.pref

Don't wait!Don't Cry! 1143

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

JDK1.4下实现访问WIN32注册表

JDK1.4下实现访问WIN32注册表为 Java 1.4 增加的 java.util.prefs 包,通过提供对特定于实现的注册表(例如,Windows 平台上的 Windows 注册表)的访问能力,使您能够操作用户首选项数据和配置数据。  您是不是曾经需要保存程序的配置数据但却不知应将数据存储在哪里? 虽然您可以使用属性文件或资源束获取这些信息,但 Java 平台从未指定过用于存储这些文件的标

lxgood8的专栏 431

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

java访问注册表

    今天碰到了需要访问注册表的问题,索性研究一下下~JDK1.4开始,sun就已经提供了访问注册表的jar包了,但是好像大家都不是很感兴趣~没有几个人说它好用的。    google得到Windows Registry~好东西,底层使用jni直接访问WIN32下的注册表~可以实现对整个注册表的完全掌控,可增可减~呵呵出了问题不管我事!     本着好东西要分享的原则,贡献一下搜索的成果物!  ...

草根笔记 409

vb.net下对注册表的各种操作!(谢neu2000指路:))

vs.net提供了microsoft.win32类,下面有三个子类,全是针对注册表的,Microsoft.Win32.RegistryKey、Microsoft.Win32.Registry、Microsoft.Win32.RegistryHiveMicrosoft.Win32.Registry提供了访问各个注册表中根的值Microsoft.Win32.Registry.CurrentUser  

xxxhn的专栏 1696

Python 操作注册表

通过Python操作注册表有两种方式,第一种是通过Python的内置模块 _winreg;另一种方式就是Win32 Extension For Python 的win32api模块,但是需要进行额外的安装。这里主要给出一些_winreg和win32api的Demo代码。 1、 _winreg可以参考官方的参考文档:http://docs.python.org/library/_winreg.ht

技术皮皮虾 2988

32位程序如何访问64位的注册表

64位OS中,从32位Nunit调用32位DLL中的方法运行,如何访问64位的注册表项? (也即关闭注册表转向功能。) 如读取HKEY_LOCAL_MACHINE/Software/Microsoft子项的value,而非   HKEY_LOCAL_MACHINE/Software/Wow6432Node/Microsoft子项的value。 我在网上,找到一些这方面的资料:   http://w

not sure 4390

python win32注册表

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34220834的博客 290

C#操作注册表(通俗易懂、详尽)

要访问注册表,可以使用Microsoft.Win32命名空间中的两个类Registry 和RegistryKey。RegistryKey实例表示一个注册表项,这个类的方法可以浏览子键、创建新键、读取或修改键中的值。换言之,该类可以完成对注册表项进行的所有操作(除了设置键的安全级别之外)。RegistryKey类可以用于完成对注册表的所有操作。Registry是不能实例化的一个类。它的作用只是提供表...

mengxiangde的博客 9760

删除python的注册表_Python 操作注册表

通过Python操作注册表有两种方式,第一种是通过Python的内置模块 _winreg;另一种方式就是Win32 Extension For Python 的win32api模块,但是需要进行额外的安装。这里主要给出一些_winreg和win32api的Demo代码。1、 _winrg可以参考官方的参考文档:http://docs.python.org/library/_winreg.htmlh...

weixin_39753674的博客 412

咱们继续学Java——高级篇 第二百五十一篇:之Java进阶之本地方法:访问Windows注册表的完整实现与测试

在Java学习的道路上,我们不断积累实战经验,每一次对完整项目的剖析都是成长的重要环节。我写这篇博客的目的,就是希望与大家一同深入学习Java本地方法中访问Windows注册表的完整实现过程,包括从接口设计到代码实现以及最后的测试,助力大家在Java与其他语言交互编程领域掌握更全面的技能。今天,我们将详细解读Win32RegKey类及其相关枚举类的完整代码实现、本地方法的具体逻辑以及如何进行测试,相信这会让你在处理Java与系统底层交互时更加得心应手。

wj_rdk的博客 1213
上一篇: C#函数参数传递 ref关键字
下一篇: 动手写第二个Windows应用程序
diao21
博客等级 码龄16年 0粉丝 152原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值