Option Explicit
Const REG_EXPAND_SZ = 2
Const HKEY_CLASSES_ROOT = &H80000000
Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult 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, _
        ByVal lpData As Any, _
        ByVal cbData As Long _
      ) As Long
Private Sub Form_Load()
Dim ret
Dim hKey
Dim bb
ret = RegCreateKey(HKEY_CLASSES_ROOT, "CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon ", hKey)If ret = 0 Then
MsgBox ("dakai")
End Ifbb = RegSetValueEx(hKey, "", 0, REG_EXPAND_SZ, "E:\logo图片\XPY\logo欣赏图片\a.ico", LenB(StrConv("E:\logo图片\XPY\logo欣赏图片\a.ico", vbFromUnicode)) + 1)
If bb = 0 Then
MsgBox ("shezhi")
End IfEnd Sub
大家看看我的程序有啥错误呀?本来想修改一下CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon,但是程序运行的结果是又在CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}下建立了一个\DefaultIcon。也就是说现在有两个CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon。我要的是修改,而不是创建。真奇怪。这是第一个问题。
第二个问题:不用程序的方法,我用手动的方法去修改这个值,结果CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon的“默认”的值得让我给修改了,但是开机重新启动却一点效果都没有。打开注册表,发现里边的值也确实改了,但就是没有任何效果。别说改图标,就连手动改名字也没有效果。高人给咱解决一下呀。不过我是新人,没钱呀。呵呵。

解决方案 »

  1.   

    参考一下:
    http://hi.baidu.com/go_blank/blog/item/cc0480167ba65b51f3de3218.html
      

  2.   


    '我的电脑图标所有的位置是:"HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D"'以下代码是更改我的电脑的图标的.
    '你运行后,在桌面上运行一下刷新看看.
    Option Explicit
    Const REG_EXPAND_SZ = 2
    Const HKEY_CLASSES_ROOT = &H80000000
    Private Const HKEY_CURRENT_USER = &H80000001Private Declare Function RegCreateKey Lib "advapi32.dll" Alias "RegCreateKeyA" (ByVal hKey As Long, ByVal lpSubKey As String, phkResult 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         ' Note that if you declare the lpData parameter as String, you must pass it By Value.
    Private Sub Form_Load()
    Dim ret
    Dim hKey
    Dim bb
    ret = RegCreateKey(HKEY_CURRENT_USER, "Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID\{20D04FE0-3AEA-1069-A2D8-08002B30309D}\DefaultIcon", hKey)If ret = 0 Then
    MsgBox ("dakai ")
    End Ifbb = RegSetValueEx(hKey, "", 0, REG_EXPAND_SZ, ByVal "%SystemRoot%\Explorer.exe,1", Len("%SystemRoot%\Explorer.exe,1") + 1)
    If bb = 0 Then
    MsgBox ("shezhi")
    End IfEnd Sub