Regism无法处理dll

本文关键字:dll 处理 Regism | 更新日期: 2023-09-27 18:29:51

我正在使用SharpShell在c#中创建一个IconHandler shell扩展。这是我的dll的代码。

using SharpShell.Attributes;
using SharpShell.SharpIconHandler;
using System;
using System.Collections.Generic;
using System.Drawing;
using System.IO;
using System.Linq;
using System.Reflection;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
namespace DllIconHandler
{
    [ComVisible(true)]
    [COMServerAssocation(AssociationType.ClassOfExtension, ".jxe")]
    public class DllIconHandler : SharpIconHandler
    {
        protected override Icon GetIcon(bool smallIcon, uint iconSize)
        {
            Icon icon = null;
            FileInfo file = new FileInfo(SelectedItemPath);
            long size = file.Length;
            if (size > 0)
            {
                icon = new Icon("C:''Users''Owner''Desktop''icon1.ico");
            }
            else
            {
                icon = new Icon("C:''Users''Owner''Desktop''icon2.ico");
            }
            return GetIconSpecificSize(icon, new Size((int)iconSize, (int)iconSize));
        }
    }
}

我将其构建到一个dll中,并将dll移到桌面上。然后,我作为管理员在命令提示符下使用以下命令在dll上运行regasm。

C:'Windows'Microsoft.NET'Framework64'v4.0.30319'RegAsm.exe C:'Users'Owner'Desktop'DllIconHandler.dll /codebase

但当我这样做时,出现错误

RegAsm : error RA0000 : An error occurred inside the user defined Register/Unreg
ister functions: System.InvalidOperationException: Cannot open default icon key
for class jxe_auto_file
   at SharpShell.ServerRegistration.ServerRegistrationManager.SetIconHandlerDefa
ultIcon(RegistryKey classesKey, String className)
   at SharpShell.ServerRegistration.ServerRegistrationManager.RegisterServerAsso
ciations(Guid serverClsid, ServerType serverType, String serverName, Association
Type associationType, IEnumerable`1 associations, RegistrationType registrationT
ype)
   at SharpShell.SharpShellServer.DoRegister(Type type, RegistrationType registr
ationType)

注册表中似乎有问题。

Regism无法处理dll

注册表中的条目应该如下所示:

HKEY_CLASSES_根
jxe_auto_file
DefaultIcon:(默认)(图标路径)

我很确定您的jxe_auto_file条目中没有"DefaultIcon"

相关文章: