如何使用VB.net代码更改扩展程序的图标?
答案 0 :(得分: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,所以我无法提供更多帮助。 (并且可能存在更好的方式来执行此操作。)
答案 1 :(得分: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,则可能会出现问题,因此如果您沿着该路线走下去,则应添加一些错误处理。如果你通过代码设置它,你会没事的。
对于没有关联的图标,我不知道如何做,除了自己为它们建立关联。