VB程序员博客

VB程序开发

程序如下,请看看哪里出错?

Private Sub Command1_Click()
    If SaveKey(HKEY_CLASSES_ROOT, "ServoWorksS100M", "s100m.txt") = True Then
        MsgBox "save!"
    End If

End Sub

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 = 1                    ' …
    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

每次都是红色字体处 返回87(参数错误),但是错在哪里?

Private Declare Function RegSaveKey Lib "advapi32.dll" Alias "RegSaveKeyA" (ByVal hKey As Long, ByVal lpFile As String, lpSecurityAttributes As SECURITY_ATTRIBUTES) As Long
都是这样的声明, 问题到底在哪里呢?

我看网上的帖子都是说regsavekey这样那样的问题,就没有看见一个正常使用的例子,而我用的也都是别人封装好的注册表操作程序,为什么regsavekey会让无数的人一直反复的烦恼呢? 

没有人了解吗?


标签: , ,