2009-07-28 90 views

回答

0

好吧,把它們放在VB 2005中,但它也應該在VB 2008中工作。

Imports System 
Imports Microsoft.Win32.Registry 

Public Class Form1 
    ' Controls: 
    ' txtFT: Textbox, where the user inputs the filetype (eg. ".jpg") 
    ' txtIcon: Textbox, where the user inputs the path to the icon (eg. "C:\icon.ico") 
    ' btnChangeIcon: Button, to call the function. 
    '----------------------------------------------------------------------------------------------- 


    Public Sub SetDefaultIcon(ByVal FileType As String, ByVal Icon As String) 
     Dim rk As Microsoft.Win32.RegistryKey = ClassesRoot 
     Dim rk1 As Microsoft.Win32.RegistryKey = ClassesRoot 
     Dim ext As Microsoft.Win32.RegistryKey = rk.OpenSubKey(FileType) 
     Dim regtype As String = ext.GetValue("") 
     ext = rk1.OpenSubKey(regtype, True).OpenSubKey("DefaultIcon", True) 
     ext.SetValue("", Icon) 
     MessageBox.Show(ext.ToString) 
    End Sub 

    Private Sub btnChangeIcon_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnChangeIcon.Click 
     SetDefaultIcon(txtFT.Text, txtIcon.Text) 
    End Sub 
End Class 

在Windows XP上測試。如你所見,它得到文件類型,並獲得(默認)值。該值指向其關聯,其中包含DefaultIcon鍵。用戶在「txtFT」中輸入文件類型,在「txtIcon」中輸入圖標文件。該表單是Form1。當用戶單擊btnChangeIcon時,將調用SetDefaultIcon函數。 如果用戶在沒有輸入任何信息的情況下點擊btnChangeIcon,它可能會出現問題,因此如果您沿着該路線行進,應該添加一些錯誤處理。如果你通過代碼設置它,你會很好。

對於沒有關聯的圖標我不知道該怎麼做,除了自己爲它們建立關聯。

  • SP
0

在Windows中,文件擴展名及其關聯的圖標和程序存儲在註冊表中:HKEY_CLASSES_ROOT\全系統關聯。

從Windows XP開始,還有HKEY_CURRENT_USER\Software\Classes\爲當前用戶的文件關聯,但到目前爲止它很少使用。

例如,如果你想改變爲.txt的信息,你會先檢查默認值HKEY_CLASSES_ROOT\.txt\(在我的系統是txtfile),然後再去匹配鍵在HKEY_CLASSES_ROOT - 在這個例子中,它會是HKEY_CLASSES_ROOT\txtfile\DefaultIcon

但我不使用VB.NET,所以我不能幫助更多。 (並且可能存在比這裏描述的更好的的方式來執行它。)