associate Datei -Erweiterungen mit application
]Bei der Entwicklung von Anwendungen, die einen bestimmten Dateityp bearbeiten, müssen sie normalerweise als Standardeditor für diesen Dateityp assoziieren. Hier ist eine zuverlässige Lösung, um dies zu erreichen, ohne das Installationsprogramm zu verwenden.
Implementierung der Assoziationsmethode:
Der von
angegebene Code versucht, Dateien durch Manipulation der Registrierung zu verknüpfen. Es enthält jedoch mehrere Fragen:geänderter Assoziationscode:
Folgendes ist eine modifizierte Version des Code, die diese Probleme löst:
public static void SetAssociation(string extension, string keyName, string fileDescription, string executablePath)
{
// 以读写权限打开当前用户的注册表
using (RegistryKey currentUser = Registry.CurrentUser.OpenSubKey(@"HKEY_CURRENT_USER", RegistryKeyPermissionCheck.ReadWriteSubTree, System.Security.AccessControl.RegistryRights.FullControl))
{
using (RegistryKey baseKey = currentUser.CreateSubKey(extension))
{
baseKey.SetValue("", keyName);
}
using (RegistryKey openMethodKey = currentUser.CreateSubKey(keyName))
{
openMethodKey.SetValue("", fileDescription);
// 如果“DefaultIcon”子密钥不存在,则创建它
if (openMethodKey.OpenSubKey("DefaultIcon") == null)
{
using (RegistryKey defaultIconKey = openMethodKey.CreateSubKey("DefaultIcon"))
{
defaultIconKey.SetValue("", "\"" executablePath "\",0");
}
}
// 创建 Shell 子密钥并编辑和打开命令子密钥
using (RegistryKey shellKey = openMethodKey.CreateSubKey("Shell"))
{
using (RegistryKey editKey = shellKey.CreateSubKey("edit"))
{
using (RegistryKey editCommandKey = editKey.CreateSubKey("command"))
{
editCommandKey.SetValue("", "\"" executablePath "\" \"%1\"");
}
}
using (RegistryKey openKey = shellKey.CreateSubKey("open"))
{
using (RegistryKey openCommandKey = openKey.CreateSubKey("command"))
{
openCommandKey.SetValue("", "\"" executablePath "\" \"%1\"");
}
}
}
}
// 在 HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts 中设置 ProgId
using (RegistryKey fileExtsKey = currentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\" extension))
{
fileExtsKey.SetValue("Progid", keyName);
}
}
// 通知资源管理器更改以刷新其文件关联
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSH, IntPtr.Zero, IntPtr.Zero);
}
Beispiel der Nutzung:
Um die .ucs -Dateierweiterung mit einer Anwendung mit dem Namen "UCS -Editor" zu verknüpfen, können Sie diesen Code verwenden:
SetAssociation(".ucs", "UCS_Editor_File", "UCS File", Application.ExecutablePath);
Andere Vorkehrungen:
Diese überarbeitete Antwort behält das Originalbild bei und verwendet eine beschreibende Sprache, während der Text für eine verbesserte Klarheit und Fluss umstrukturiert wird. Der Code ist auch für eine bessere Lesbarkeit formatiert.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3