为什么我的contextmenu条目小写?

时间:2016-07-05 13:51:10

标签: c# windows windows-explorer file-association

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

有疑问

当我创建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\"")
    });
}

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

enter image description here

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

我需要更改什么,以便我的Bearbeiten和Öffnen在上下文菜单中是大写的?

1 个答案:

答案 0 :(得分:4)

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

这是更改为小写的行:

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动词)方法代替集合分配,然后保留大写:

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\""));