`

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,;
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;
}
分享到:
评论

相关推荐

    如何将Win7系统注册表直接锁定以便防止被篡改.docx

    3. 单击"系统",在右边窗口找到"阻止访问注册表编辑工具"项,然后双击打开它。 4. 它的默认状态是"未配置",我们将其选择为"已启用",然后点击"确定"保存。 5. 重启电脑,然后再根据步骤1中去尝试打开Win7注册表,...

    V4.0 STEP 7 MicroWIN SP9注册表补丁

    导入这个补丁,不再需要安装SP8. 也适用于Win7 64位系统。

    WIN7 下命令行修改注册表提示拒绝访问的解决

    是开启 WIN7中的 Administrator 用户的方法, CMD 的注册表修改命令的操作

    VB.NET中如何快速访问注册表

    vb.net中访问注册表变得非常的简单。我们可以用microsoft.Win32 名称空间的下的registry类和registryKey类。另外My.Computer.Registry 也可以返回一个Microsoft.Win32.Registry类的实例。

    易语言注册表操作类

    易语言注册表操作类

    win7注册表打不开 注册表编辑器打不开的解决方法.docx

    3. 在右侧窗口中找到并双击“阻止访问注册表编辑工具”一项,在弹出的“阻止访问注册表编辑工具属性”对话框中选择“已禁用”。 4. 单击“确定”按钮保存设置,退出“组策略”。 这样,用户就可以解锁注册表编辑器...

    Win10注册表编辑器怎么打开?.docx

    * 解决问题:注册表编辑器可以帮助用户解决一些系统问题,例如无法启动程序或无法访问某些功能。 三、如何打开 Win10 注册表编辑器? 打开 Win10 注册表编辑器非常简单,下面是具体的步骤: 1. 使用 Win + R 组合...

    Win7访问SMB文件服务器

    Win7访问SMB文件服务器,打开压缩里面的注册表,点击运行,重启即可!

    win7注册表 权限修改方法(有图)

    win7注册表 权限修改方法(有图),一步一步的教授。

    SWT WIN32 Extension

    访问Windows注册表。 系统文件夹: 获取系统特殊文件加的路径和图标。 系统快捷方式: 管理系统快捷方式。 系统相关信息: 收集系统CPU,内存,环境变量等相关信息。 系统会话: 提供关机,休眠,重启,注销等功能。 ...

    windows10注册表彻底禁用关闭操作中心windefender.reg浏览器变老实禁用浏览器【关键四个注册表]同样适用WIN7

    windows10注册表彻底禁用关闭操作中心windefender.reg浏览器变老实禁用浏览器【关键四个注册表,每个功能一个注册表文件,合并即可]同样适用WIN7 WIN10 WIn8通用

    操作系统安全:注册表的访问控制.pptx

    还有一种更为简洁的方法,就是限制所有用户都不能访问注册表,简单明了的就是将系统的注册表功能关闭掉,当管理员想要设置或是修改注册表的时候在重新开该功能。具体步骤:先打开win+r 在运行界面中输入gpedit.msc...

    注册表读取

    纯的C++没有访问注册表的函数,访问注册表要用系统的API,下面有一个程序,可以获取QQ的安装路径,QQ的安装路径保存在HKEY_LOCAL_MACHINE\SOFTWARE\TENCENT\QQ下的Install里,修改一下应该能帮到你

    vista win7 win8 访问samba 共享补丁

    默认情况下vista win7 win8采用NTLMv2认证访问共享,而samba采用NTLM认证,只需要导入注册表即可轻松访问.

    改注册表直接登陆域

    改注册表让域客户端直接登陆域,避免有人用本地管理员登录。

    (推荐)Win32 API大全

    Win32 API是从事Windows应用程序开发所必备的。 首先对Win32 API函数做完整的概述;然后收录五大类函数: 窗口管理、图形设备接口、系统服务、国际特性以及网络服务; 在附录部分,讲解如何在Visual Basic和...

    操作系统安全:注册表的远程访问.pptx

    注册表的远程访问;注册表的远程访问;注册表的远程访问;方法一:我们可以禁止服务中的“Remote Registry”服务项,首先打开服务:win+r输入services.msc;在服务的界面窗口中找到“Remote Registry”服务项,点击禁用...

    WIN10访问共享电脑

    WIN10由于升级版本后,导致用各种方法(无论是用IP或是计算机名)访问共享主机都会报错“找不到网络路径”,其详细的错误代码为0x80070035.经实践证明用已经修改好了的注册表文件双击导入注册表能完美解决。

    WIN7进入XP共享文件夹需要帐号密码的解决办法.doc

    WIN7 操作系统中的 RestrictAnonymous 注册表设置决定了 WIN7 是否允许匿名用户访问共享文件夹。在默认情况下,该设置为“1”,这意味着 WIN7 不允许匿名用户访问共享文件夹。为了实现 WIN7 进入 XP 共享文件夹无需...

    跟踪注册表软件Advanced Registry Tracer

    与其他注册表监视软件(例如:RegMon 和 Win-Expose Registry)或卸载软件(例如:CleenSweep 和 Uninstall)不同的是: ART 是通过比较不同时刻整个注册表拷贝来的出结果;而上述软件是通过监测并过滤某一时间段内...

Global site tag (gtag.js) - Google Analytics