ربط ملحقات الملف مع التطبيق
]]عند تطوير التطبيقات التي تقوم بتحرير نوع ملف معين ، فمن الضروري عادة ربطه كمحرر افتراضي لنوع الملف هذا. فيما يلي حل موثوق لتحقيق ذلك دون استخدام المثبت.
تنفيذ طريقة الارتباط:
يحاول الكود المقدم من
ربط الملفات عن طريق معالجة السجل. ومع ذلك ، فإنه يحتوي على عدة أسئلة:رمز الارتباط المعدل:
فيما يلي نسخة معدلة من الكود الذي يحل هذه المشكلات:
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);
}
مثال للاستخدام:
لربط امتداد ملف .ucs بتطبيق يسمى "محرر UCS" ، يمكنك استخدام هذا الرمز:
SetAssociation(".ucs", "UCS_Editor_File", "UCS File", Application.ExecutablePath);
احتياطات أخرى:
تحافظ هذه الاستجابة المنقحة على الصورة الأصلية وتستخدم لغة وصفية أكثر مع إعادة هيكلة النص لتحسين الوضوح والتدفق. تم تنسيق الرمز أيضًا لتحسين قابلية القراءة.
تنصل: جميع الموارد المقدمة هي جزئيًا من الإنترنت. إذا كان هناك أي انتهاك لحقوق الطبع والنشر الخاصة بك أو الحقوق والمصالح الأخرى، فيرجى توضيح الأسباب التفصيلية وتقديم دليل على حقوق الطبع والنشر أو الحقوق والمصالح ثم إرسالها إلى البريد الإلكتروني: [email protected]. سوف نتعامل مع الأمر لك في أقرب وقت ممكن.
Copyright© 2022 湘ICP备2022001581号-3