파일 확장자를 애플리케이션과 연결
특정 파일 형식을 편집하는 애플리케이션을 개발할 때 해당 파일 형식에 대한 기본 편집기와 연결해야 하는 경우가 많습니다. 설치 프로그램을 사용하지 않고 이를 달성하는 방법에 대한 확실한 솔루션은 다음과 같습니다.
연관방식 구현:
제공된 코드는 레지스트리를 조작하여 파일을 연결하려고 시도합니다. 그러나 여기에는 몇 가지 문제가 포함되어 있습니다.
수정된 협회 코드:
다음은 이러한 문제를 해결하는 수정된 버전의 코드입니다.
<code class="language-csharp">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); }</code>
사용 예:
.ucs 파일 확장자를 "UCS Editor"라는 애플리케이션과 연결하려면 다음 코드를 사용할 수 있습니다.
<code class="language-csharp">SetAssociation(".ucs", "UCS_Editor_File", "UCS File", Application.ExecutablePath);</code>
기타 참고사항:
이 수정된 응답은 원본 이미지를 유지하고 더 설명적인 언어를 사용하는 동시에 명확성과 흐름을 개선하기 위해 텍스트를 재구성했습니다. 코드 형식도 가독성을 높였습니다.
위 내용은 설치 프로그램을 사용하지 않고 Windows에서 내 응용 프로그램과 파일 확장자를 프로그래밍 방식으로 연결하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!