Windows API 更改注册表键值 + 修改注册表去除IE打印页面的页眉页脚

来源:互联网 发布:方正电子图书数据库 编辑:程序博客网 时间:2024/06/05 17:43

@1.

IE打印出来的页面经常是含有页眉页脚的,比如在页面左下方出现文件名,右上方出现页码等,这些经常是我们不想要的内容。

如果手动设置的话,这个设置项在IE的菜单中:工具->页面设置,我们可以通过将页眉页脚全部设置为无,就可以清除掉。

而实际上,页面设置对话框对页眉页脚的更改是通过更改HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup下的header和footer值来实现的。

导出的reg文件可以是这样:

Windows Registry Editor Version 5.00[HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\PageSetup]"header"="""footer"=""

只要将header和footer置为空字符串,IE打印出来的谁的就不会带页眉页脚。

@2.

对于Windows API对注册表的操作,参考http://msdn.microsoft.com/en-us/library/windows/desktop/ms724875(v=vs.85).aspx

在操作注册表时,注意HKEY_CURRENT_USER、HKEY_CLASS_ROOT之类的根路径是需要用单独的函数来打开的,如RegOpenCurrentUser、RegOpenCurrentUser等函数,其他键可以用RegOpenKey或RegOpenKeyEx指定打开。

在Vista及Windows 7系统下,如果开启了帐户控制,用不同的函数打开注册表是具有不同的安全提示等级的,同时这也跟打开注册表时使用的权限指定参数REGSAM samDesired参数也是有关的。如果使用RegOpenKey,其实际权限为KEY_ALL_ACCESS (完全控制)。这往往需要用户具有管理员权限,并且在安全等级非设置为最低的情况下,会弹出一个窗口确认注册表修改。如果用户不具有管理员权限,指定KEY_ALL_ACCESS的打开注册表操作将会失败。所以在选择使用RegOpen系列函数及指定权限时,需要选择正确的函数和权限。其他的细节,MSDN中均有详细描述。下列代码实现的功能就是清除掉IE打印时的页眉页脚,仅仅使用了RegOpenCurrentUser函数(KEY_SET_VALUE权限)和RegSetKeyValue函数。

BOOL ConfigRegSettings(){    HKEY hkey;    ///////////////////////////////////////////////////////    // 强制打印页面不显示页眉页脚    if (ERROR_SUCCESS != RegOpenCurrentUser(KEY_SET_VALUE, &hkey))    {        return FALSE;    }    if (ERROR_SUCCESS != RegSetKeyValue(hkey, TEXT("Software\\Microsoft\\Internet Explorer\\PageSetup"), TEXT("header"), REG_SZ, TEXT(""), sizeof(TEXT(""))))    {        AfxMessageBox(TEXT("RegSetKeyValue fail"));        return FALSE;    }    if (ERROR_SUCCESS != RegSetKeyValue(hkey, TEXT("Software\\Microsoft\\Internet Explorer\\PageSetup"), TEXT("footer"), REG_SZ, TEXT(""), sizeof(TEXT(""))))    {        AfxMessageBox(TEXT("RegSetKeyValue fail"));        return FALSE;    }    return TRUE;}
原创粉丝点击