728x90
반응형
728x170
[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
}
}
728x90
[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를 연결시키는 프로그램이다.
728x90
반응형
그리드형(광고전용)
'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 |
댓글을 달아 주세요