我正在编写VB应用程序,但每当我运行应用程序时,我都会收到下面列出的错误:
"创建表单时出错。有关详细信息,请参阅Exception.InnerException。错误为:检索CLSID为{11219420-1768-11D1-95BE-00609797EA4F}的组件的COM类工厂失败,原因是以下错误:80040154类未注册(HRESULT中的异常:0x80040154(REGDB_E_CLASSNOTREG))。"
我已经尝试注册shell32.dll文件,我已经在注册表中查找条目{11219420-1768-11D1-95BE-00609797EA4F},但它不存在,我已经尝试为x86编译此应用程序。
Imports Shell32
Imports System.IO
Public Class frmIconChanger
Dim sh As ShellLinkObject = New ShellLinkObject
Private Sub btnBackupAndChange_Click(sender As Object, e As EventArgs) Handles btnBackupAndChange.Click
For Each desktopIcon In My.Computer.FileSystem.GetFiles("C:Users" + getUserName().ToString + "Desktop")
Dim fileExtension As String = Path.GetExtension(desktopIcon)
If (fileExtension = ".lnk") Then
MsgBox(sh.GetIconLocation(desktopIcon).ToString)
End If
Next
End Sub
Private Function getUserName() As String
Return System.Environment.UserName.Trim
End Function
End Class
其他信息:我使用的是Windows7 64位计算机。我有.Net 4.0及以前的版本,使用的是Visual Studio 2012。此外,我在我的项目中添加了shell32.dll作为参考。如果能为解决这一问题提供任何帮助,我们将不胜感激。
谢谢。
请参阅此链接"创建链接"。查看"C"代码并查找常量CLSID_ShellLinkIID_IShellLink
这些是类和接口所需的值。
另一个链接很有用:IShellLink接口
这应该是您需要的GUID:CLSID:="{00021401-0000-0000-C000-000000000046}"IID:="{000214F9-0000-0000-C000-000000000046}"