为什么我的上下文菜单条目是小写的?

Why are my contextmenu entries lower case?

我正在使用 BrendanGrant.Helpers.FileAssociation;(一个 NuGet 包)为我的应用程序创建文件关联。到目前为止它工作正常。但是,我对 ProgramVerbs:

有疑问

当我创建 ProgramAssociation 并像这样向其中添加动词时:

  var pai = new ProgramAssociationInfo(fai.ProgID);

  pai.Create(
    "App name",
    new[]
    {
      new ProgramVerb("Öffnen", Assembly.GetEntryAssembly().Location + " \"%1\""),
      new ProgramVerb("Bearbeiten", Assembly.GetEntryAssembly().Location + " \"%1\"")
    });
}

Bearbeiten 和 Öffnen(编辑和打开)关键字在 windows 资源管理器的上下文菜单中是小写的:

我将第二个条目命名为 WAAAA 以测试它是否只改变了第一个字符,但显然它没有。

我必须更改什么才能让我的 Bearbeiten 和 Öffnen 在上下文菜单中变成大写?

我检查了这个库,你似乎对这个行为没有影响。

这是更改为小写的行:

RegistryKey subKey2 = subKey1.CreateSubKey(verb.Name.ToLower());

_

protected void SetVerbs(ProgramVerb[] verbs)
{
  if (!this.Exists)
    throw new Exception("Extension does not exist");
  RegistryKey registryKey = RegistryHelper.AssociationsRoot.OpenSubKey(this.progId, true);
  if (registryKey.OpenSubKey("shell", true) != null)
    registryKey.DeleteSubKeyTree("shell");
  RegistryKey subKey1 = registryKey.CreateSubKey("shell");
  foreach (ProgramVerb verb in verbs)
  {
    RegistryKey subKey2 = subKey1.CreateSubKey(verb.Name.ToLower());
    RegistryKey subKey3 = subKey2.CreateSubKey("command");
    subKey3.SetValue(string.Empty, (object) verb.Command, RegistryValueKind.ExpandString);
    subKey3.Close();
    subKey2.Close();
  }
  ShellNotification.NotifyOfChange();
}

您应该使用 AddVerb(ProgramVerb verb) 方法而不是集合分配,然后应保留大写字母:

pai.Create("App name", new ProgramVerb[0]);
pai.AddVerb(new ProgramVerb("Öffnen", Assembly.GetEntryAssembly().Location + " \"%1\""));
pai.AddVerb(new ProgramVerb("Bearbeiten", Assembly.GetEntryAssembly().Location + " \"%1\""));