■ 파일 확장자 연결하기
------------------------------------------------------------------------------------------------------------------------
[TestProject 프로젝트]
▶ Program.cs
using System;
namespace TestProject { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main(argumentArray)
/// <summary> /// 프로그램 시작하기 /// </summary> /// <param name="argumentArray">인자 배열</param> private static void Main(string[] argumentArray) { if(argumentArray.Length < 1) { return; }
Console.WriteLine("테스트 프로그램이 실행되었습니다 : " + argumentArray[0]);
Console.ReadKey(true); }
#endregion } }
|
[TestRegister 프로젝트]
▶ Program.cs
using System;
using Microsoft.Win32;
namespace TestRegister { /// <summary> /// 프로그램 /// </summary> class Program { //////////////////////////////////////////////////////////////////////////////////////////////////// Method ////////////////////////////////////////////////////////////////////////////////////////// Static //////////////////////////////////////////////////////////////////////////////// Private
#region 프로그램 시작하기 - Main()
/// <summary> /// 프로그램 시작하기 /// </summary> private static void Main() { RegisterFileExtension(".test", "TestProject.test", "테스트 확장자", @"D:\TestSolution\Bin\Release\TestProject.exe");
Console.WriteLine("테스트 확장자를 등록했습니다.");
Console.WriteLine("테스트 확장자 등록을 취소하기 위해서 아무 키나 눌러 주시기 바랍니다.");
Console.ReadKey(true);
UnregisterFileExtension(".test", "TestProject.test");
Console.WriteLine("테스트 확장자 등록을 취소했습니다."); }
#endregion
#region 하위 레지스트리 키 체크하기 - CheckSubsidaryRegistryKey(registryKey, subsidaryKeyName)
/// <summary> /// 하위 레지스트리 키 체크하기 /// </summary> /// <param name="registryKey">레지스트리 키</param> /// <param name="subsidaryKeyName">하위 키명</param> /// <returns>하위 레지스트리 키 체크 결과</returns> private static bool CheckSubsidaryRegistryKey(RegistryKey registryKey, string subsidaryKeyName) { RegistryKey subsidaryRegistryKey = null;
try { subsidaryRegistryKey = registryKey.OpenSubKey(subsidaryKeyName);
return subsidaryRegistryKey != null; } finally { if(subsidaryRegistryKey != null) { subsidaryRegistryKey.Close(); } } }
#endregion #region 레지스트리 키 삭제하기 - DeleteRegistryKey(registryKey, subsidaryKeyName, deleteSubsidaryKeyTree)
/// <summary> /// 레지스트리 키 삭제하기 /// </summary> /// <param name="registryKey">레지스트리 키</param> /// <param name="subsidaryKeyName">하위 키명</param> /// <param name="deleteSubsidaryKeyTree">하위 키 트리 삭제 여부</param> private static void DeleteRegistryKey(RegistryKey registryKey, string subsidaryKeyName, bool deleteSubsidaryKeyTree) { if(!CheckSubsidaryRegistryKey(registryKey, subsidaryKeyName)) { return; }
if(deleteSubsidaryKeyTree) { registryKey.DeleteSubKeyTree(subsidaryKeyName); } else { registryKey.DeleteSubKey(subsidaryKeyName); } }
#endregion
#region 파일 확장자 등록하기 - RegisterFileExtension(fileExtension, fileType, fileDescription, executableFilePath)
/// <summary> /// 파일 확장자 등록하기 /// </summary> /// <param name="fileExtension">파일 확장자</param> /// <param name="fileType">파일 타입</param> /// <param name="fileDescription">파일 설명</param> /// <param name="executableFilePath">실행 파일 경로</param> private static void RegisterFileExtension(string fileExtension, string fileType, string fileDescription, string executableFilePath) { using(RegistryKey classesRegistryKey = Registry.CurrentUser.OpenSubKey(@"Software\Classes", true)) { using(RegistryKey fileExtensionRegistryKey = classesRegistryKey.CreateSubKey(fileExtension)) { fileExtensionRegistryKey.SetValue(null, fileType); }
using(RegistryKey fileTypeRegistryKey = classesRegistryKey.CreateSubKey(fileType)) { fileTypeRegistryKey.SetValue(null, fileDescription);
using (RegistryKey shellRegistryKey = fileTypeRegistryKey.CreateSubKey("shell")) { using(RegistryKey openRegistryKey = shellRegistryKey.CreateSubKey("open")) { using(RegistryKey commandRegistryKey = openRegistryKey.CreateSubKey("command")) { string command = string.Format("\"{0}\" \"%1\"", executableFilePath);
commandRegistryKey.SetValue(null, command); } } } } } }
#endregion #region 파일 확장자 등록 취소하기 - UnregisterFileExtension(fileExtension, fileType)
/// <summary> /// 파일 확장자 등록 취소하기 /// </summary> /// <param name="fileExtension">파일 확장자</param> /// <param name="fileType">파일 타입</param> private static void UnregisterFileExtension(string fileExtension, string fileType) { using(RegistryKey classesRegistryKey = Registry.CurrentUser.OpenSubKey(@"Software\Classes", true)) { DeleteRegistryKey(classesRegistryKey, fileExtension, false); DeleteRegistryKey(classesRegistryKey, fileType , true); } }
#endregion } }
|
------------------------------------------------------------------------------------------------------------------------
※ TestProject.exe는 .test 확장자 파일과 연결되는 프로그램이다.
※ TestRegister.exe는 .test 확장자와 TestProject.exe를 연결시키는 프로그램이다.
'C# > Common' 카테고리의 다른 글
[C#/COMMON] UNIX 타임 스탬프 구하기 (0) | 2019.06.09 |
---|---|
[C#/COMMON] WIN32 API를 사용해 최상위 윈도우 여부 구하기 (0) | 2019.06.06 |
[C#/COMMON] Process 클래스 : 윈도우즈 서비스 실행하기 (0) | 2019.06.06 |
[C#/COMMON] 공용체(Union) 구조체 사용하기 (0) | 2019.06.02 |
[C#/COMMON] Socket 클래스 : 소켓 연결시 시간 제한하기 (0) | 2019.06.02 |
[C#/COMMON] 파일 확장자 연결하기 (0) | 2019.05.30 |
[C#/COMMON] 바이트 배열에서 구조체 객체 구하기 (0) | 2019.05.27 |
[C#/COMMON] 구조체 바이트 배열 구하기 (0) | 2019.05.27 |
[C#/COMMON] Assembly 클래스 : 어셈블리 GUID 구하기 (0) | 2019.05.26 |
[C#/COMMON] Socket 클래스 : 호스트 IP 주소 구하기 (0) | 2019.05.26 |
[C#/COMMON] 특정 프로세스의 윈도우 상태 구하기 (0) | 2019.05.26 |
댓글을 달아 주세요