我正在使用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(编辑和打开)关键字是小写的:
我将第二个条目WAAAA命名为测试它是否只改变第一个字符,但显然不是。
我需要更改什么,以便我的Bearbeiten和Öffnen在上下文菜单中是大写的?
答案 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\""));