zoukankan      html  css  js  c++  java
  • 注册表 API 以及开机自启动

    注册表是window系统中非常重要的一部分,今天在网上查了一些文章学习了下,觉得其中有一句话总结的很经典:注册表是用来存储信息的。

    这句话虽然有点废,但是说的没错。当然,注册表中包含的内容非常多,远没有单纯存储信息那么简单。

    注册表的基础信息:

    数据存储结构为树。

    树的每一个节点就是一个键值。

    每个节点都能包含N多子键。

    一个键可以有很多键值。

    每个键值都有一个名字,以及一种指定类型的数据。

    我今天也是刚开始看注册表,知道的也很有限,就不接着献丑了,直接跳到注册表API。

    常用的注册表函数:

    RegOpenKeyEX

    函数原型为:LONG RegOpenKeyEx( HKEY hKey, LPCTSTR lpSubKey, DWORD ulOptions, REGSAM samDesired, PHKEY phkResult);

    hKey为主键句柄,也可以是预定义好的键值,比如:HKEY_CLASSES_ROOT、HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE、HKEY_USERS

    lpSubKye为子键名称,简单的ANSI字符串。这个参数比较有趣的是,不必是当前主键的子键,即便是子键的子键也可以找到。

    ulOptions 保留参数,必须是0.

    samDesired 指定访问权限,比如最简单的读写操作。

    phkResult 一个输出参数,返回被访问键的句柄值。

    返回值,如果函数成功执行,那么返回ERROR_SUCCESS。如果失败,呵呵,详见MSDN。

    RegCloseKey 这个我就不废话了,就是关闭句柄的。

    RegCreateKey

    函数原型:LONG RegCreateKey( HKEY hKey,  LPCTSTR lpSubKey,  PHKEY phkResult );

    那个EX版的函数有好多参数,看的我眼花缭乱。

    hKey 和RegOpenKeyEx函数中参数的功能是一样的,就是一个已经打开了的句柄。

    lpSubKey也是一样的。

    hpkResult 最后的这个,就是返回创建了的键的句柄。

    RegGetValue

    函数原型:

    LONG WINAPI RegGetValue(HKEY hkey, LPCTSTR lpSubKey,LPCTSTR lpValue, DWORD dwFlags, LPDWORD pdwType, PVOID pvData, LPDWORD pcbData );

    好多参数,前两个就不解释了,都一样的。

    lpValue是一个输入参数,输入的是键值名。如果是NULL或者空字符串,那么获取未命名键值或者默认键值。

    dwFlags 类型限制,如果键值的数据类型和该参数指定的类型不匹配,那么执行失败。可以指定为RRF_RT_ANY参数,不做限制。

    pdwType 输出参数,指定类型信息。

    pvData 保存值的缓冲区

    pcdData 输出,用于指定pvData缓冲区的大小,一字节为单位

    返回值,和上面都一样。

    RegSetValue

    函数原型

    LONG WINAPI RegSetValue(HKEY hKey, LPCTSTR lpSubKey, DWORD dwType,LPCTSTR lpData, DWORD cbData );

    这个函数功能和上面的GetValue正好相反,但是因为是设置值的,也因此而简单了很多。

    前两个参数直接忽略。

    dwType 就是指定数据类型的,类型有好多,详见MSDN。

    lpData 缓冲区

    csData 输出参数。输入的时候指定缓冲区大小,输出的时候,变成缓冲区写入大小。这风格见了不少了。

    返回值,依旧如此。

    然后还有两个函数,分别是删除键值和删除键的。函数功能都很简单,不介绍了。

    接下来要讲的就是,如何通过修改注册表实现程序的开机自启动。

    在windows的注册表中,有一个键专门负责开机自启动程序。这个键的地址如下:

    HKEY_LOCAL_MACHINE/SOFTWARE/MICROSOFT/WINDOWS/CURRENTVERSION/RUN

    截个图:

    这个就是我的电脑上的启动程序列表了,不过有点我比较奇怪的就是,有道词典和杀毒软件的自启动在这里什么都没看到。应该是还有其他方法。

    程序我就不写了~偷个懒,等会还要点名。

  • 相关阅读:
    修改表结构
    enum/set 约束
    MYSQL 数据类型
    表和数据的基础操作
    存储引擎
    mysql
    HTML 介绍
    selor模块
    select
    协程
  • 原文地址:https://www.cnblogs.com/matrix-r/p/3355867.html
Copyright © 2011-2022 走看看