• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
    • 軟件測試技術
    • 軟件測試博客
    • 軟件測試視頻
    • 開源軟件測試技術
    • 軟件測試論壇
    • 軟件測試沙龍
    • 軟件測試資料下載
    • 軟件測試雜志
    • 軟件測試人才招聘
      暫時沒有公告

    字號: | 推薦給好友 上一篇 | 下一篇

    用API修改注冊表的完整模塊

    發布: 2007-7-01 21:48 | 作者: admin | 來源: | 查看: 17次 | 進入軟件測試論壇討論

    領測軟件測試網

    有些老掉牙了,這是很久以前寫的了,覺得功能已經比較完善了。

    下載地址:

    這是我用這個模塊寫過的一個軟件:

    注冊表大師 2.0

    標準模塊代碼:
    ´**************************************************************************************************************
    ´* 本模塊提供了一些對注冊表進行操作的函數
    ´* 警告: 操作注冊表是非常危險的, 使用本模塊中的任何函數都要慎重!!!
    ´*
    ´* 版權: LPP軟件工作室
    ´* 作者: 盧培培
    ´**************************************************************************************************************

    Option Explicit

    Option Compare Text

    ´---------------------------------------------------------------
    ´- 注冊表 API 聲明...
    ´---------------------------------------------------------------
    Private Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    Private Declare Function RegCreateKeyEx Lib "advapi32.dll" Alias "RegCreateKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal Reserved As Long, ByVal lpClass As String, ByVal dwOptions As Long, ByVal samDesired As Long, lpSecurityAttributes As SECURITY_ATTRIBUTES, phkResult As Long, lpdwDisposition As Long) As Long
    Private Declare Function RegDeleteKey Lib "advapi32.dll" Alias "RegDeleteKeyA" (ByVal hKey As Long, ByVal lpSubKey As String) As Long
    Private Declare Function RegDeleteValue Lib "advapi32.dll" Alias "RegDeleteValueA" (ByVal hKey As Long, ByVal lpValueName As String) As Long
    Private Declare Function RegOpenKeyEx Lib "advapi32.dll" Alias "RegOpenKeyExA" (ByVal hKey As Long, ByVal lpSubKey As String, ByVal ulOptions As Long, ByVal samDesired As Long, phkResult As Long) As Long
    Private Declare Function RegQueryValueEx Lib "advapi32.dll" Alias "RegQueryValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal lpReserved As Long, lpType As Long, lpData As Any, lpcbData As Long) As Long
    Private Declare Function RegRestoreKey Lib "advapi32.dll" Alias "RegRestoreKeyA" (ByVal hKey As Long, ByVal lpFile As String, ByVal dwFlags As Long) As Long
    Private Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
    Private Declare Function RegSetValueEx Lib "advapi32.dll" Alias "RegSetValueExA" (ByVal hKey As Long, ByVal lpValueName As String, ByVal Reserved As Long, ByVal dwType As Long, lpData As Any, ByVal cbData As Long) As Long
    Private Declare Function RegQueryInfoKey Lib "advapi32.dll" Alias "RegQueryInfoKeyA" (ByVal hKey As Long, ByVal lpClass As String, lpcbClass As Long, ByVal lpReserved As Long, lpcSubKeys As Long, lpcbMaxSubKeyLen As Long, lpcbMaxClassLen As Long, lpcValues As Long, lpcbMaxValueNameLen As Long, lpcbMaxValueLen As Long, lpcbSecurityDescriptor As Long, lpftLastWriteTime As FILETIME) As Long
    Private Declare Function RegEnumValue Lib "advapi32.dll" Alias "RegEnumValueA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpValueName As String, lpcbValueName As Long, ByVal lpReserved As Long, lpType As Long, lpData As Byte, lpcbData As Long) As Long
    Private Declare Function RegEnumKeyEx Lib "advapi32.dll" Alias "RegEnumKeyExA" (ByVal hKey As Long, ByVal dwIndex As Long, ByVal lpName As String, lpcbName As Long, ByVal lpReserved As Long, ByVal lpClass As String, lpcbClass As Long, lpftLastWriteTime As FILETIME) As Long

    Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal TokenHandle As Long, ByVal DisableAllPriv As Long, NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, PreviousState As TOKEN_PRIVILEGES, ReturnLength As Long) As Long                ´Used to adjust your program´s security privileges, can´t restore without it!
    Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" Alias "LookupPrivilegeValueA" (ByVal lpSystemName As Any, ByVal lpName As String, lpLuid As LUID) As Long          ´Returns a valid LUID which is important when making security changes in NT.
    Private Declare Function OpenProcessToken Lib "advapi32.dll" (ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, TokenHandle As Long) As Long
    Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

    ´---------------------------------------------------------------
    ´- 注冊表 Api 常數...
    ´---------------------------------------------------------------
    ´ 注冊表創建類型值...
    Const REG_OPTION_NON_VOLATILE = 0        ´ 當系統重新啟動時,關鍵字被保留

    ´ 注冊表關鍵字安全選項...
    Const READ_CONTROL = &H20000
    Const KEY_QUERY_VALUE = &H1
    Const KEY_SET_VALUE = &H2
    Const KEY_CREATE_SUB_KEY = &H4
    Const KEY_ENUMERATE_SUB_KEYS = &H8
    Const KEY_NOTIFY = &H10
    Const KEY_CREATE_LINK = &H20
    Const KEY_READ = KEY_QUERY_VALUE + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + READ_CONTROL
    Const KEY_WRITE = KEY_SET_VALUE + KEY_CREATE_SUB_KEY + READ_CONTROL
    Const KEY_EXECUTE = KEY_READ
    Const KEY_ALL_ACCESS = KEY_QUERY_VALUE + KEY_SET_VALUE + KEY_CREATE_SUB_KEY + KEY_ENUMERATE_SUB_KEYS + KEY_NOTIFY + KEY_CREATE_LINK + READ_CONTROL
                        
    ´ 返回值...
    Const ERROR_NONE = 0
    Const ERROR_BADKEY = 2
    Const ERROR_ACCESS_DENIED = 8
    Const ERROR_SUCCESS = 0

    ´ 有關導入/導出的常量
    Const REG_FORCE_RESTORE As Long = 8&
    Const TOKEN_QUERY As Long = &H8&
    Const TOKEN_ADJUST_PRIVILEGES As Long = &H20&
    Const SE_PRIVILEGE_ENABLED As Long = &H2
    Const SE_RESTORE_NAME = "SeRestorePrivilege"
    Const SE_BACKUP_NAME = "SeBackupPrivilege"

    ´---------------------------------------------------------------
    ´- 注冊表類型...
    ´---------------------------------------------------------------
    Private Type SECURITY_ATTRIBUTES
        nLength As Long
        lpSecurityDescriptor As Long
        bInheritHandle As Boolean
    End Type

    Private Type FILETIME
        dwLowDateTime As Long
        dwHighDateTime As Long
    End Type

    Private Type LUID
        lowpart As Long
        highpart As Long
    End Type

    Private Type LUID_AND_ATTRIBUTES
        pLuid As LUID
        Attributes As Long
    End Type

    Private Type TOKEN_PRIVILEGES
        PrivilegeCount As Long
        Privileges As LUID_AND_ATTRIBUTES
    End Type

    ´---------------------------------------------------------------
    ´- 自定義枚舉類型...
    ´---------------------------------------------------------------
    ´ 注冊表數據類型...
    Public Enum ValueType
        REG_SZ = 1                         ´ 字符串值
        REG_EXPAND_SZ = 2                  ´ 可擴充字符串值
        REG_BINARY = 3                     ´ 二進制值
        REG_DWORD = 4                      ´ DWORD值
        REG_MULTI_SZ = 7                   ´ 多字符串值
    End Enum

    ´ 注冊表關鍵字根類型...
    Public Enum KeyRoot
        HKEY_CLASSES_ROOT = &H80000000
        HKEY_CURRENT_USER = &H80000001
        HKEY_LOCAL_MACHINE = &H80000002
        HKEY_USERS = &H80000003
        HKEY_PERFORMANCE_DATA = &H80000004
        HKEY_CURRENT_CONFIG = &H80000005
        HKEY_DYN_DATA = &H80000006
    End Enum

    Private hKey As Long                   ´ 注冊表打開項的句柄
    Private i As Long, j As Long           ´ 循環變量
    Private Success As Long                ´ API函數的返回值, 判斷函數調用是否成功

    ´-------------------------------------------------------------------------------------------------------------
    ´- 新建注冊表關鍵字并設置注冊表關鍵字的值...
    ´- 如果 ValueName 和 Value 都缺省, 則只新建 KeyName 空項, 無子鍵...
    ´- 如果只缺省 ValueName 則將設置指定 KeyName 的默認值
    ´- 參數說明: KeyRoot--根類型, KeyName--子項名稱, ValueName--值項名稱, Value--值項數據, ValueType--值項類型
    ´-------------------------------------------------------------------------------------------------------------
    Public Function SetKeyValue(KeyRoot As KeyRoot, KeyName As String, Optional ValueName As String, Optional Value As Variant = "", Optional ValueType As ValueType = REG_SZ) As Boolean
        Dim lpAttr As SECURITY_ATTRIBUTES                   ´ 注冊表安全類型
        lpAttr.nLength = 50                                 ´ 設置安全屬性為缺省值...
        lpAttr.lpSecurityDescriptor = 0                     ´ ...
        lpAttr.bInheritHandle = True                        ´ ...
       
        ´ 新建注冊表關鍵字...
        Success = RegCreateKeyEx(KeyRoot, KeyName, 0, ValueType, REG_OPTION_NON_VOLATILE, KEY_ALL_ACCESS, lpAttr, hKey, 0)
        If Success <> ERROR_SUCCESS Then SetKeyValue = False: RegCloseKey hKey: Exit Function
       
        ´ 設置注冊表關鍵字的值...
        If IsMissing(ValueName) = False Then
            Select Case ValueType
                Case REG_SZ, REG_EXPAND_SZ, REG_MULTI_SZ
                    Success = RegSetValueEx(hKey, ValueName, 0, ValueType, ByVal CStr(Value), LenB(StrConv(Value, vbFromUnicode)) + 1)
                Case REG_DWORD
                    If CDbl(Value) <= 4294967295# And CDbl(Value) >= 0 Then
                        Dim sValue As String
                        sValue = DoubleToHex(Value)
                        Dim dValue(3) As Byte
                        dValue(0) = Format("&h" & Mid(sValue, 7, 2))
                        dValue(1) = Format("&h" & Mid(sValue, 5, 2))
                        dValue(2) = Format("&h" & Mid(sValue, 3, 2))
                        dValue(3) = Format("&h" & Mid(sValue, 1, 2))
                        Success = RegSetValueEx(hKey, ValueName, 0, ValueType, dValue(0), 4)
                    Else
                        Success = ERROR_BADKEY
                    End If
                Case REG_BINARY
                    On Error Resume Next
                    Success = 1                             ´ 假設調用API不成功(成功返回0)
                    ReDim tmpValue(UBound(Value)) As Byte
                    For i = 0 To UBound(tmpValue)
                        tmpValue(i) = Value(i)
                    Next i
                    Success = RegSetValueEx(hKey, ValueName, 0, ValueType, tmpValue(0), UBound(Value) + 1)
            End Select
        End If
        If Success <> ERROR_SUCCESS Then SetKeyValue = False: RegCloseKey hKey: Exit Function
       
        ´ 關閉注冊表關鍵字...
        RegCloseKey hKey
        SetKeyValue = True                                       ´ 返回函數值
    End Function

    ´-------------------------------------------------------------------------------------------------------------
    ´- 獲得已存在的注冊表關鍵字的值...
    ´- 如果 ValueName="" 則返回 KeyName 項的默認值...
    ´- 如果指定的注冊表關鍵字不存在, 則返回空串...
    ´- 參數說明: KeyRoot--根類型, KeyName--子項名稱, ValueName--值項名稱, ValueType--值項類型
    ´-------------------------------------------------------------------------------------------------------------
    Public Function GetKeyValue(KeyRoot As KeyRoot, KeyName As String, ValueName As String, Optional ValueType As Long) As String
        Dim TempValue As String                             ´ 注冊表關鍵字的臨時值
        Dim Value As String                                 ´ 注冊表關鍵字的值
        Dim ValueSize As Long                               ´ 注冊表關鍵字的值的實際長度
        TempValue = Space(1024)                             ´ 存儲注冊表關鍵字的臨時值的緩沖區
        ValueSize = 1024                                    ´ 設置注冊表關鍵字的值的默認長度
       
        ´ 打開一個已存在的注冊表關鍵字...
        RegOpenKeyEx KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey
       
        ´ 獲得已打開的注冊表關鍵字的值...
        RegQueryValueEx hKey, ValueName, 0, ValueType, ByVal TempValue, ValueSize
       
        ´ 返回注冊表關鍵字的的值...
        Select Case ValueType                                                        ´ 通過判斷關鍵字的類型, 進行處理
            Case REG_SZ, REG_MULTI_SZ, REG_EXPAND_SZ
                TempValue = Left$(TempValue, ValueSize - 1)                          ´ 去掉TempValue尾部空格
                Value = TempValue
            Case REG_DWORD
                ReDim dValue(3) As Byte
                RegQueryValueEx hKey, ValueName, 0, REG_DWORD, dValue(0), ValueSize
                For i = 3 To 0 Step -1
                    Value = Value + String(2 - Len(Hex(dValue(i))), "0") + Hex(dValue(i))   ´ 生成長度為8的十六進制字符串
                Next i
                If CDbl("&H" & Value) < 0 Then                                              ´ 將十六進制的 Value 轉換為十進制
                    Value = 2 ^ 32 + CDbl("&H" & Value)
                Else
                    Value = CDbl("&H" & Value)
                End If
            Case REG_BINARY
                If ValueSize > 0 Then
                    ReDim bValue(ValueSize - 1) As Byte                                     ´ 存儲 REG_BINARY 值的臨時數組
                    RegQueryValueEx hKey, ValueName, 0, REG_BINARY, bValue(0), ValueSize
                    For i = 0 To ValueSize - 1
                        Value = Value + String(2 - Len(Hex(bValue(i))), "0") + Hex(bValue(i)) + " "  ´ 將數組轉換成字符串
                    Next i
                End If
        End Select
       
        ´ 關閉注冊表關鍵字...
        RegCloseKey hKey
        GetKeyValue = Trim(Value)                                                    ´ 返回函數值
    End Function

    ´-------------------------------------------------------------------------------------------------------------
    ´- 刪除已存在的注冊表關鍵字的值...
    ´- 如果指定的注冊表關鍵字不存在, 則不做任何操作...
    ´- 參數說明: KeyRoot--根類型, KeyName--子項名稱, ValueName--值項名稱
    ´-------------------------------------------------------------------------------------------------------------
    Public Function DeleteKey(KeyRoot As KeyRoot, KeyName As String, Optional ValueName As String) As Boolean
        Dim tmpKeyName As String                            ´ 注冊表關鍵字的臨時子項名稱
        Dim tmpValueName As String                          ´ 注冊表關鍵字的臨時子鍵名稱
       
        ´ 打開一個已存在的注冊表關鍵字...
        Success = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey)
        If Success <> ERROR_SUCCESS Then DeleteKey = False: RegCloseKey hKey: Exit Function
       
        ´ 刪除已打開的注冊表關鍵字...
        tmpKeyName = ""
        tmpValueName = KeyName
        If ValueName = "" Then                                              ´ 判斷ValueName是否缺省, 如缺省作相應處理
            If InStrRev(KeyName, "\") > 1 Then
                tmpValueName = Right(KeyName, InStrRev(KeyName, "\") + 1)
                tmpKeyName = Left(KeyName, InStrRev(KeyName, "\") - 1)
            End If
            Success = RegOpenKeyEx(KeyRoot, tmpKeyName, 0, KEY_ALL_ACCESS, hKey)
            Success = RegDeleteKey(hKey, tmpValueName)
        Else
            Success = RegDeleteValue(hKey, ValueName)
        End If
        If Success <> ERROR_SUCCESS Then DeleteKey = False: RegCloseKey hKey: Exit Function
       
        ´ 關閉注冊表關鍵字...
        RegCloseKey hKey
        DeleteKey = True                                    ´ 返回函數值
    End Function

    ´-------------------------------------------------------------------------------------------------------------
    ´- 獲得注冊表關鍵字的一些信息...
    ´- SubKeyName()      注冊表關鍵字的所有子項的名稱(注意:最小下標為0)
    ´- ValueName()       注冊表關鍵字的所有子鍵的名稱(注意:最小下標為0)
    ´- ValueType()       注冊表關鍵字的所有子鍵的類型(注意:最小下標為0)
    ´- CountKey          注冊表關鍵字的子項數量
    ´- CountValue        注冊表關鍵字的子鍵數量
    ´- MaxLenKey         注冊表關鍵字的子項名稱的最大長度
    ´- MaxLenValue       注冊表關鍵字的子鍵名稱的最大長度
    ´-------------------------------------------------------------------------------------------------------------
    Public Function GetKeyInfo(KeyRoot As KeyRoot, KeyName As String, SubKeyName() As String, ValueName() As String, ValueType() As ValueType, Optional CountKey As Long, Optional CountValue As Long, Optional MaxLenKey As Long, Optional MaxLenValue As Long) As Boolean
        Dim f As FILETIME
        Dim l As Long, s As String
       
        ´ 打開一個已存在的注冊表關鍵字...
        Success = RegOpenKeyEx(KeyRoot, KeyName, 0, KEY_ALL_ACCESS, hKey)
        If Success <> ERROR_SUCCESS Then GetKeyInfo = False: RegCloseKey hKey: Exit Function
       
        ´ 獲得一個已打開的注冊表關鍵字的信息...
        Success = RegQueryInfoKey(hKey, vbNullString, ByVal 0&, ByVal 0&, CountKey, MaxLenKey, ByVal 0&, CountValue, MaxLenValue, ByVal 0&, ByVal 0&, f)
        If Success <> ERROR_SUCCESS Then GetKeyInfo = False: RegCloseKey hKey: Exit Function
       
        If CountKey <> 0 Then
            ReDim SubKeyName(CountKey - 1) As String            ´ 重新定義數組, 使用數組大小與注冊表關鍵字的子項數量匹配
            For i = 0 To CountKey - 1
                SubKeyName(i) = Space(255)
                l = 255
                RegEnumKeyEx hKey, i, ByVal SubKeyName(i), l, 0, vbNullString, ByVal 0&, f
                SubKeyName(i) = Left(SubKeyName(i), l)
            Next i
           
            ´ 下面的二重循環對字符串數組進行冒泡排序
            For i = 0 To UBound(SubKeyName)
                For j = i + 1 To UBound(SubKeyName)
                    If SubKeyName(i) > SubKeyName(j) Then
                        s = SubKeyName(i)
                        SubKeyName(i) = SubKeyName(j)
                        SubKeyName(j) = s
                    End If
                Next j
            Next i
        End If
       
        If CountValue <> 0 Then
            ReDim ValueName(CountValue - 1) As String           ´ 重新定義數組, 使用數組大小與注冊表關鍵字的子鍵數量匹配
            ReDim ValueType(CountValue - 1) As Long             ´ 重新定義數組, 使用數組大小與注冊表關鍵字的子鍵數量匹配
            For i = 0 To CountValue - 1
                ValueName(i) = Space(255)
                l = 255
                RegEnumValue hKey, i, ByVal ValueName(i), l, 0, ValueType(i), ByVal 0&, ByVal 0&
                ValueName(i) = Left(ValueName(i), l)
            Next i
           
            ´ 下面的二重循環對字符串數組進行冒泡排序
            For i = 0 To UBound(ValueName)
                For j = i + 1 To UBound(ValueName)
                    If ValueName(i) > ValueName(j) Then
                        s = ValueName(i)
                        ValueName(i) = ValueName(j)
                        ValueName(j) = s
                    End If
                Next j
            Next i
        End If
       
        ´ 關閉注冊表關鍵字...
        RegCloseKey hKey
        GetKeyInfo = True                                   ´ 返回函數值
    End Function

    ´-------------------------------------------------------------------------------------------------------------
    ´- 導出注冊表關鍵字的值
    ´- 參數說明: KeyRoot--根類型, KeyName--子項名稱, FileName--導出的文件路徑及文件名(原始數據庫格式)
    ´-------------------------------------------------------------------------------------------------------------
    Public Function SaveKey(KeyRoot As KeyRoot, KeyName As String, FileName As String) As Boolean
        On Error Resume Next
       
        Dim lpAttr As SECURITY_ATTRIBUTES                   ´ 注冊表安全類型
        lpAttr.nLength = 50                                 ´ 設置安全屬性為缺省值...
        lpAttr.lpSecurityDescriptor = 0                     ´ ...
        lpAttr.bInheritHandle = True                        ´ ...
       
        If EnablePrivilege(SE_BACKUP_NAME) = False Then
            SaveKey = False
            Exit Function
        End If
       
        Success = RegOpenKeyEx(KeyRoot, KeyName, 0&, KEY_ALL_ACCESS, hKey)
        If Success <> 0 Then
            SaveKey = False
            Success = RegCloseKey(hKey)
            Exit Function
        End If
       
        Success = RegSaveKey(hKey, FileName, lpAttr)
        If Success = 0 Then SaveKey = True Else SaveKey = False
       
        Success = RegCloseKey(hKey)
    End Function

    ´-------------------------------------------------------------------------------------------------------------
    ´- 導入注冊表關鍵字的值
    ´- 參數說明: KeyRoot--根類型, KeyName--子項名稱, FileName--導入的文件路徑及文件名(原始數據庫格式)
    ´-------------------------------------------------------------------------------------------------------------
    Public Function RestoreKey(KeyRoot As KeyRoot, KeyName As String, FileName As String) As Boolean
        On Error Resume Next
       
        If EnablePrivilege(SE_RESTORE_NAME) = False Then
            RestoreKey = False
            Exit Function
        End If
       
        Success = RegOpenKeyEx(KeyRoot, KeyName, 0&, KEY_ALL_ACCESS, hKey)
        If Success <> 0 Then
            RestoreKey = False
            Success = RegCloseKey(hKey)
            Exit Function
        End If
       
        Success = RegRestoreKey(hKey, FileName, REG_FORCE_RESTORE)
        If Success = 0 Then RestoreKey = True Else RestoreKey = False
       
        Success = RegCloseKey(hKey)
    End Function

    ´-------------------------------------------------------------------------------------------------------------
    ´- 使注冊表允許導入/導出
    ´-------------------------------------------------------------------------------------------------------------
    Private Function EnablePrivilege(seName As String) As Boolean
        On Error Resume Next
       
        Dim p_lngRtn As Long
        Dim p_lngToken As Long
        Dim p_lngBufferLen As Long
        Dim p_typLUID As LUID
        Dim p_typTokenPriv As TOKEN_PRIVILEGES
        Dim p_typPrevTokenPriv As TOKEN_PRIVILEGES
       
        p_lngRtn = OpenProcessToken(GetCurrentProcess(), TOKEN_ADJUST_PRIVILEGES Or TOKEN_QUERY, p_lngToken)
        If p_lngRtn = 0 Then
            EnablePrivilege = False
            Exit Function
        End If
        If Err.LastDllError <> 0 Then
            EnablePrivilege = False
            Exit Function
        End If
       
        p_lngRtn = LookupPrivilegeValue(0&, seName, p_typLUID)
        If p_lngRtn = 0 Then
          EnablePrivilege = False
          Exit Function
        End If
       
        p_typTokenPriv.PrivilegeCount = 1
        p_typTokenPriv.Privileges.Attributes = SE_PRIVILEGE_ENABLED
        p_typTokenPriv.Privileges.pLuid = p_typLUID
       
        EnablePrivilege = (AdjustTokenPrivileges(p_lngToken, False, p_typTokenPriv, Len(p_typPrevTokenPriv), p_typPrevTokenPriv, p_lngBufferLen) <> 0)
    End Function

    ´-------------------------------------------------------------------------------------------------------------
    ´- 將 Double 型( 限制在 0--2^32-1 )的數字轉換為十六進制并在前面補零
    ´- 參數說明: Number--要轉換的 Double 型數字
    ´-------------------------------------------------------------------------------------------------------------
    Private Function DoubleToHex(ByVal Number As Double) As String
        Dim strHex As String
        strHex = Space(8)
        For i = 1 To 8
            Select Case Number - Int(Number / 16) * 16
                Case 10
                    Mid(strHex, 9 - i, 1) = "A"
                Case 11
                    Mid(strHex, 9 - i, 1) = "B"
                Case 12
                    Mid(strHex, 9 - i, 1) = "C"
                Case 13
                    Mid(strHex, 9 - i, 1) = "D"
                Case 14
                    Mid(strHex, 9 - i, 1) = "E"
                Case 15
                    Mid(strHex, 9 - i, 1) = "F"
                Case Else
                    Mid(strHex, 9 - i, 1) = CStr(Number - Int(Number / 16) * 16)
            End Select
            Number = Int(Number / 16)
        Next i
        DoubleToHex = strHex
    End Function

     

     


    延伸閱讀

    文章來源于領測軟件測試網 http://www.kjueaiud.com/


    關于領測軟件測試網 | 領測軟件測試網合作伙伴 | 廣告服務 | 投稿指南 | 聯系我們 | 網站地圖 | 友情鏈接
    版權所有(C) 2003-2010 TestAge(領測軟件測試網)|領測國際科技(北京)有限公司|軟件測試工程師培訓網 All Rights Reserved
    北京市海淀區中關村南大街9號北京理工科技大廈1402室 京ICP備10010545號-5
    技術支持和業務聯系:info@testage.com.cn 電話:010-51297073

    軟件測試 | 領測國際ISTQBISTQB官網TMMiTMMi認證國際軟件測試工程師認證領測軟件測試網

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>