将文件扩展名与C#应用程序中的应用程序相关联

Lamloumi Afif

我需要将文件扩展名与特定的可执行应用程序相关联,并将其值写入寄存器,因此我看到了本教程:tutorial

所以我创建了一个新的Wpf应用程序,在其中添加了此类:

public class FileAssociation
    {
        // Associate file extension with progID, description, icon and application
        public static void Associate(string extension,
               string progID, string description, string icon, string application)
        {
            Registry.ClassesRoot.CreateSubKey(extension).SetValue("", progID);
            if (progID != null && progID.Length > 0)
                using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(progID))
                {
                    if (description != null)
                        key.SetValue("", description);
                    if (icon != null)
                        key.CreateSubKey("DefaultIcon").SetValue("", ToShortPathName(icon));
                    if (application != null)
                        key.CreateSubKey(@"Shell\Open\Command").SetValue("",
                                    ToShortPathName(application) + " \"%1\"");
                }
        }

        // Return true if extension already associated in registry
        public static bool IsAssociated(string extension)
        {
            return (Registry.ClassesRoot.OpenSubKey(extension, false) != null);
        }

        [DllImport("Kernel32.dll")]
        private static extern uint GetShortPathName(string lpszLongPath,
            [Out] StringBuilder lpszShortPath, uint cchBuffer);

        // Return short path format of a file name
        private static string ToShortPathName(string longName)
        {
            StringBuilder s = new StringBuilder(1000);
            uint iSize = (uint)s.Capacity;
            uint iRet = GetShortPathName(longName, s, iSize);
            return s.ToString();
        }
    }

然后,我将图标图像添加到项目的根目录,然后放入以下代码段:

  if (!FileAssociation.IsAssociated(".akp"))
                FileAssociation.Associate(".akp", "ClassID.ProgID", "akp File", "akeo.ico", @"C:\Users\Lamloumi\Desktop\MyWork\C#\App - SuiteTool\bin\x64\Debug\App - SuiteTool.exe");

但是我在这条线有一个问题

Registry.ClassesRoot.CreateSubKey(extension).SetValue("", progID);

的

所以我需要知道

  1. 有什么问题,即为什么该代码无法正常工作?
  2. 我该如何解决?

谢谢,

Stadub Dima

似乎您没有足够的权限来编写Windows注册表,请尝试将包含以下内容的内容添加到项目的app.manifest文件中:

<?xml version="1.0" encoding="utf-8"?>
<asmv1:assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
        <security>
          <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
            <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />
          </requestedPrivileges>
        </security>
      </trustInfo>
</asmv1:assembly>

或者,如果应用程序必须在不要求每次启动的情况下都要求管理员权限的情况下工作,则可以添加自动提升功能,如本示例中所示,UAC自动提升

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将文件扩展名与C#应用程序中的应用程序相关联

来自分类Dev

以编程方式将文件扩展名与Windows上的应用程序相关联

来自分类Dev

将文件扩展名与Java应用程序关联

来自分类Dev

如何将本机应用程序与WINE中的文件类型相关联

来自分类Dev

将文件扩展名与我的应用程序关联

来自分类Dev

将文件扩展名与JavaFX Mac OS X应用程序关联

来自分类Dev

您如何将.exe文件扩展名与Windows中的程序相关联?

来自分类Dev

将文件扩展名关联到不在“打开方式”列表中的 UWP Windows 10 应用程序

来自分类Dev

如何将Wine中的所有文件类型与其相应的本机应用程序相关联?

来自分类Dev

如何将Wine中的所有文件类型与其相应的本机应用程序相关联?

来自分类Dev

将关键字与统一启动器中的应用程序相关联

来自分类Dev

将关键字与统一启动器中的应用程序相关联

来自分类Dev

如何为特定应用程序关联文件扩展名(而非文件类型)?

来自分类Dev

如何为特定应用程序关联文件扩展名(而非文件类型)?

来自分类Dev

文件扩展名/ MIME类型/图标/默认应用程序如何关联?

来自分类Dev

文件扩展名/ MIME类型/图标/默认应用程序如何关联?

来自分类Dev

快速将文件类型与iOS应用程序相关联

来自分类Dev

在Cocoa Mac Os X桌面应用程序中,我可以配置项目以便将没有扩展名的文件拖到应用程序的图标中吗?

来自分类Dev

将应用程序与消息扩展关联

来自分类Dev

根据bash中文件的扩展名在应用程序中执行文件

来自分类Dev

Windows-如何创建自己的文件扩展名,并将其与自己的程序相关联?

来自分类Dev

删除Web窗体应用程序的(.aspx)扩展名

来自分类Dev

查找特定扩展名的默认应用程序

来自分类Dev

尝试分发IOS应用程序时,“请使用与团队ID相关联的配置配置文件”

来自分类Dev

如何将W3wp.exe的运行实例与特定的Web应用程序相关联?

来自分类Dev

Windows 注册表将单个应用程序与具有唯一图标的多种文件类型相关联

来自分类Dev

使用 .desktop 文件运行具有特定文件扩展名的应用程序

来自分类Dev

与元素类型“应用程序”相关联的属性“ andriod:name”的前缀“ andriod”是否绑定?

来自分类Dev

我的应用程序使用rem值。如何将其与像素相关联?

Related 相关文章

  1. 1

    将文件扩展名与C#应用程序中的应用程序相关联

  2. 2

    以编程方式将文件扩展名与Windows上的应用程序相关联

  3. 3

    将文件扩展名与Java应用程序关联

  4. 4

    如何将本机应用程序与WINE中的文件类型相关联

  5. 5

    将文件扩展名与我的应用程序关联

  6. 6

    将文件扩展名与JavaFX Mac OS X应用程序关联

  7. 7

    您如何将.exe文件扩展名与Windows中的程序相关联?

  8. 8

    将文件扩展名关联到不在“打开方式”列表中的 UWP Windows 10 应用程序

  9. 9

    如何将Wine中的所有文件类型与其相应的本机应用程序相关联?

  10. 10

    如何将Wine中的所有文件类型与其相应的本机应用程序相关联?

  11. 11

    将关键字与统一启动器中的应用程序相关联

  12. 12

    将关键字与统一启动器中的应用程序相关联

  13. 13

    如何为特定应用程序关联文件扩展名(而非文件类型)?

  14. 14

    如何为特定应用程序关联文件扩展名(而非文件类型)?

  15. 15

    文件扩展名/ MIME类型/图标/默认应用程序如何关联?

  16. 16

    文件扩展名/ MIME类型/图标/默认应用程序如何关联?

  17. 17

    快速将文件类型与iOS应用程序相关联

  18. 18

    在Cocoa Mac Os X桌面应用程序中,我可以配置项目以便将没有扩展名的文件拖到应用程序的图标中吗?

  19. 19

    将应用程序与消息扩展关联

  20. 20

    根据bash中文件的扩展名在应用程序中执行文件

  21. 21

    Windows-如何创建自己的文件扩展名,并将其与自己的程序相关联?

  22. 22

    删除Web窗体应用程序的(.aspx)扩展名

  23. 23

    查找特定扩展名的默认应用程序

  24. 24

    尝试分发IOS应用程序时,“请使用与团队ID相关联的配置配置文件”

  25. 25

    如何将W3wp.exe的运行实例与特定的Web应用程序相关联?

  26. 26

    Windows 注册表将单个应用程序与具有唯一图标的多种文件类型相关联

  27. 27

    使用 .desktop 文件运行具有特定文件扩展名的应用程序

  28. 28

    与元素类型“应用程序”相关联的属性“ andriod:name”的前缀“ andriod”是否绑定?

  29. 29

    我的应用程序使用rem值。如何将其与像素相关联?

热门标签

归档