0

我正在编写一个 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

其他信息:我在 Windows 7 64 位机器上。我有 .Net 4.0 和以前的版本,并且在 Visual Studio 2012 中工作。我还在我的项目中添加了 shell32.dll 作为参考。任何解决此问题的帮助将不胜感激。

谢谢。

4

1 回答 1

0

请参阅此链接创建链接。查看“C”代码并查找常量 CLSID_ShellLink IID_IShellLink

这些是类和接口所需的值。

这个其他链接很有用:IShellLink interface

这应该是您需要的 GUID: CLSID := "{00021401-0000-0000-C000-000000000046}" IID := "{000214F9-0000-0000-C000-000000000046}"

于 2013-02-06T20:34:18.263 回答