难免会遇到写注册表的情况,写了个实用点的RegWrite函数。为了减少代码量,用WScript.Shell取代了API来实现。

使用方式就在注释中了,就不再过多解释了。PS:注释比实现代码要丰富多了,m(-.-)m

代码:

Private Function RegWrite(ByVal name_ As String, Optional value_ As String, Optional type_ As String = "REG_SZ") As Integer
'@Author: lichmama
'@Whatfor: offer a simple way to write registry
'@Arguments:
' name_, String
' Registry Key/Value Path, eg. HKEY_CURRENT_USER\Environment(\?)
' value_, String, Optional
' Registry Value Name
' type_, String, Optional and default with "REG_SZ"
' Registry Data Type, eg. REG_SZ, REG_BINARY, ...
'@Usage:
' create new subitem:
' Call RegWrite("HKEY_CURRENT_USER\Enviroment\NewSubItem\")
' create new subitem and set the default value:
' Call RegWrite("HKEY_CURRENT_USER\Enviroment\NewSubItem\", "default-value-data")
' create new value:
' Call RegWrite("HKEY_CURRENT_USER\Enviroment\NewSubItem\NewValue", "new-value-data", "REG_EXPAND_SZ")
' overwrite value:
' Call RegWrite("HKEY_CURRENT_USER\Enviroment\NewSubItem\NewValue", "overwrite-value-data", "REG_SZ")
'@Return: Integer, zero means successful, and non-zero means failed
On Error GoTo ERROR_HANDLER:
Dim objshell As Object Set objshell = CreateObject("wscript.shell") If IsMissing(value_) Then
Call objshell.RegWrite(name_)
Else
Call objshell.RegWrite(name_, value_, type_)
End If ERROR_HANDLER:
RegWrite = Err.Number
Set objshell = Nothing
End Function

用以上方法写注册表来修改环境变量:

Call RegWrite("HKEY_CURRENT_USER\Enviroment\MyEnv", "hello,world;", "REG_EXPAND_SZ")

使其立即生效:

Private Declare Function SendMessageTimeout Lib "user32" Alias "SendMessageTimeoutA" _
(ByVal hwnd As Long, _
ByVal msg As Long, _
ByVal wParam As Long, _
ByRef lParam As Any, _
ByVal fuFlags As Long, _
ByVal uTimeout As Long, _
ByRef lpdwResult As Long) As Long Private Const HWND_BROADCAST = &HFFFF&
Private Const WM_WININICHANGE = &H1A
Private Const WM_SETTINGCHANGE = WM_WININICHANGE
Private Const SMTO_NORMAL = &H0 Private Sub UpdateSystemEnvironment()
'@http://www.bczlw.com/Article/FAQ/bianchengyuyan/VC-MFC/2007-3-5/2007030523033000.html
Call SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, &, ByVal "Environment", SMTO_NORMAL, &, &)
End Sub

打开cmd验证下:

VB6之写注册表的更多相关文章

  1. Delphi在win7/vista下写注册表等需要管理员权限的解决方案

    看到论坛好多人问win7下写注册表的问题,我结合自己的理解写了一点东西,首先声明一下,本人初学Delphi,水平有限,大家见笑了,有什么不对之处请老鸟多指点. [背景]win7/Vista提供的UAC ...

  2. IE 内使用ActiveX,写注册表被重定向到如下注册表

    IE 内使用ActiveX,写注册表被重定向到如下注册表,所以使用注册表做标记要注意下,目前还没找为什么会这样 HKEY_CURRENT_USER\Software\Microsoft\Interne ...

  3. C++写注册表

    1.       注册表简介 注册表是为Windows NT和Windows95中所有32位硬件/驱动和32位应用程序设计的数据文件,用于存储系统和应用程序的设置信息.16位驱动在Winnt (Win ...

  4. 用 C# 在 Windows 7 中写注册表想到的

    摘自:http://blog.163.com/dpj_001/blog/static/2742941520110251500753/ 某日做一个项目,需要在注册表中加入键,同时写值,操作系统环境为 W ...

  5. 关于QT写注册表开机自启动

    注册表中权限: 1.HKEY_CURRENT_USER 2.HKEY_LOCAL_MACHINE 网上有很多帖子都是用的2,其实这样有违用户权限,而且如果不是管理员用户,会写入不成功! 代码如下: Q ...

  6. delphi在64位系统下写注册表注意事项

    HKEY_LOCAL_MACHINE写这个主键下的项,在64位系统下可能会重定向,所以构造时要加KEY_WOW64_64KEY reg := TRegistry.Create(KEY_WRITE or ...

  7. inno安装客户端,写注册表url调用客户端

    [Registry] Root: HKCR; SubKey: xxx; ValueData: "xxx"; ValueType: string; Flags: CreateValu ...

  8. VC 写注册表

    BOOL Running() { HKEY hKey; LPCTSTR strRegPath = L"SOFTWARE\\Microsoft\\Windows\\CurrentVersion ...

  9. vb6.0快速操作注册表函数大全(仅字符串KEY值部分)

    Option Explicit '声明要加载的函数 Private Declare Function RegCreateKey Lib "advapi32.dll" Alias & ...

随机推荐

  1. 开涛spring3(3.1) - DI的配置使用

    3.1.1  依赖和依赖注入 传统应用程序设计中所说的依赖一般指“类之间的关系”,那先让我们复习一下类之间的关系: 泛化:表示类与类之间的继承关系.接口与接口之间的继承关系: 实现:表示类对接口的实现 ...

  2. angular实现的文字上下无缝滚动

    最近在学习angularJs,业余时间随便写了一个文字上下无缝滚动的例子,主要写了一个小小的指令. css代码:主要控制样式 <style type="text/css"&g ...

  3. Xmpp学习之Android-smack入门指导

    Xmpp学习之Android-smack入门指导 版权声明:本文为博主原创文章,未经博主允许不得转载. 转载请表明出处:http://www.cnblogs.com/cavalier-/p/69404 ...

  4. storm定时任务【tick】

    一. 简介      storm作为流计算,处理数据通常以数据驱动.即只有当spout发射数据才会进行计算.那么如果想要做定时任务如何处理哪,例如有的bolt需要输出一段时间统计的结果,这里一段时间可 ...

  5. 对pathtracing的一些个人理解

    本人水平有限,若有错误也请指正~ 上面说到pathtracing(pt)的一些优点和缺点,优点即其实现很简单,这就是大概为什么当今市面上流行的很多渲染器如今都相继采用pathtracing算法为核心进 ...

  6. javascript痛点之二作用域链

    1.执行环境(执行上下文) 先看段代码 var a = 10; var b = 20; function cc(){ var c = 30; alert("b="+b); } cc ...

  7. Vivado简单调试技能

    Vivado简单调试技能 1.关于VIO核的使用 首先配置VIO核: 配置输入输出口的数量5,5 配置输入口的位宽 配置输出口位宽和初始值. 例化与使用: vio_0 U1 ( .clk(clk_27 ...

  8. kali&BT安装好之后无法上网或者无法获得内网IP

    大家都知道,要想进行内网渗透攻击,你必须要在那个内网里. 但是大家在Vmware里安装kali的时候,大多数用户为了方便,未选择桥接模式,而是选择了使用与本机共享的IP网络当然,这样能上网,但是你的虚 ...

  9. win10下面visual studio, sublime ctrl+shift+f快捷键失效的原因

    在visual studio 和sublime中,经常遇到ctrl+shift+f不能用,然后输入法总是自动切换成繁体中文. 实在百思不得其解. 今天才发现,我用的windows 10自带的微软拼音输 ...

  10. 安装Mysql5.7并修改初始密码

    Centos 安装MySQL可以参考之前写的一篇文章 Centos7.3 安装Mysql5.7并修改初始密码 windows安装mysql5.7有两种方式 1.下载.msi安装文件直接根据界面提示进行 ...