zoukankan      html  css  js  c++  java
  • VB6之写注册表

    难免会遇到写注册表的情况,写了个实用点的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_USEREnvironment(?)
    '   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_USEREnviromentNewSubItem")
    '   create new subitem and set the default value:
    '       Call RegWrite("HKEY_CURRENT_USEREnviromentNewSubItem", "default-value-data")
    '   create new value:
    '       Call RegWrite("HKEY_CURRENT_USEREnviromentNewSubItemNewValue", "new-value-data", "REG_EXPAND_SZ")
    '   overwrite value:
    '       Call RegWrite("HKEY_CURRENT_USEREnviromentNewSubItemNewValue", "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_USEREnviromentMyEnv", "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, 0&, ByVal "Environment", SMTO_NORMAL, 1000&, 0&)
    End Sub

    打开cmd验证下:

  • 相关阅读:
    (转)图文并茂详解VisualStudio使用技巧一
    使用VS2005的 ClickOnce 技术实现按需下载组件
    (转)VS2005 SP1发布,解决只能创建WebSite,无法创建Web Application项目的问题
    .NET设计规范笔记1
    No error message available, result code: E_FAIL(0x80004005)
    SSL SettingsClient certificates
    处理程序“PageHandlerFactoryIntegrated”在其模块列表中有一个错误模块“ManagedPipelineHandler”
    添加IIS_IUSRS
    DTS,复制到同一服务器下
    在IIS7.5上配置Https,SSL
  • 原文地址:https://www.cnblogs.com/lichmama/p/4157348.html
Copyright © 2011-2022 走看看