我在网上找了,都是做成.exe文件的方法。没有写成dll组件的方法。
请教各位老师,应该怎么做。如果是用API函数,怎么写呢?

解决方案 »

  1.   

    倒,你这个问题太怪异了,有什么困难的地方么,你把程序写出来,我给你该成dll的
      

  2.   

    程序是这个:
    Option Explicit
    Public Const HKEY_CLASSES_ROOT = &H80000000
    Public Const HKEY_CURRENT_USER = &H80000001
    Public Const HKEY_LOCAL_MACHINE = &H80000002
    Public Const HKEY_USERS = &H80000003
    Public Const HKEY_PERFORMANCE_DATA = &H80000004
    Public Const HKEY_CURRENT_CONFIG = &H80000005
    Public Const HKEY_DYN_DATA = &H80000006Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    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 LongSub Main()    ret = RegCreateKey(HKEY_LOCAL_MACHINE, "SOFTWARE\zwsoft", hKey)   '这句是加入子键的方法!
        RegSetValueEx hKey, "", 0, REG_SZ, ByVal "VB操作注册表", 13   '写入值
        If Not ret Then 
           MsgBox "Create HKEY_LOCAL_MACHINE\SOFTWARE\zwsoft SubKey" 
        Else
           MsgBox "Create Subkey Operation Fail" 
        End If End Sub
    大致是这个样子的。这是API的写入注册表方式,编译后可以写入注册表加入子键,但做成dll就不行了,我想关键是注释过的那两句。
      

  3.   

    其实并不是什么不行,而是你引出用的过程等,没有声明是Private还是Public,而导到在Dll编译时出错。比如:
    =====================================
    Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As Long
    Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As Long
    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 RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult As Long) As LongPrivate Declare Function RegCloseKey Lib "advapi32.dll" (ByVal hKey As Long) As LongPrivate 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
    =====================================
      

  4.   

    回 unsigned(僵哥):   我只是贴的一个EXE的例子,dll我已经做好了。也就是按你说的方法加的,编译是可以的。
    不过关键是注释过的那两句,好象注册后,用ASP创建对外后执行没反应。
      

  5.   

    顶上去,麻烦楼主说得再具体点。不过有可能是ASP当中没有权限。因为ASP默认是以IIS的帐户运行的,权限有即,所以……
      

  6.   

    恩是的。。权限当然不够哈,不信你用一个vbs文件写入createobjec运行以下
    绝对可以
    iis默认帐户权限太低咯,,无法访问注册表的