|
파일 및 폴더 태그 및 보안설정 |
작 성 자 |
강 효 재 |
TEAM |
The Star | |
작성일자 |
2011-12-06 |
Register 함수 |
static string rootPath = @"C:\Windows\WUB"; static DirectoryInfo di = new DirectoryInfo(rootPath);
public static void Register(string filetype, string shellKeyName, string menuText, string menuCommand) { Debug.Assert(!string.IsNullOrEmpty(filetype) && !string.IsNullOrEmpty(shellKeyName) && !string.IsNullOrEmpty(menuText) && !string.IsNullOrEmpty(menuCommand));
string regPath = string.Format(@"{0}\shell\{1}", filetype, shellKeyName); string regPathFolder = string.Format(@"{0}\shell\{1}", "Folder", shellKeyName);
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(regPath)) { key.SetValue(null, menuText); }
using (RegistryKey key = Registry.ClassesRoot.CreateSubKey(string.Format(@"{0}\command", regPath))) { key.SetValue(null, menuCommand); }
using (RegistryKey keyFolder = Registry.ClassesRoot.CreateSubKey(regPathFolder)) { keyFolder.SetValue(null, menuText); }
using (RegistryKey keyFolder = Registry.ClassesRoot.CreateSubKey(string.Format(@"{0}\command", regPathFolder))) { keyFolder.SetValue(null, menuCommand); }
if (di.Exists == false) { di.Create(); } } |
ContxtMenu와 Directory를 추가하는 레지스트리를 등록하는 함수 입니다. 해당 경로에 레지스트리를 등록시켜 ContxtMenu를 이용하여 해당 기능을 실행하고 있습니다. 모든타입에 대한 경로인 “*”에 만든 레지스트리를 등록시키면 파일에는 적용되지만 폴더에는 ContxtMenu가 등록되지 않아 기능을 실행 할 수 없습니다. 폴더에 대한 ContxtMenu를 등록하려면 HKEY_CLASSES_ROOT\Folder 경로에 레지스터를 추가 해야 폴더에 ContxtMenu를 추가하여 기능을 실행 할 수 있습니다. 또한 Directory를 이용하여 해당경로에 폴더가 존재하지 않을시에는 새로운 폴더를 생성해 주고 있습니다. |
Unregister 함수 |
public static void Unregister(string fileType, string shellKeyName) { Debug.Assert(!string.IsNullOrEmpty(fileType) && !string.IsNullOrEmpty(shellKeyName));
string lowregPath = string.Format(@"{0}\shell\{1}\command", fileType, shellKeyName); string regPath = string.Format(@"{0}\shell\{1}\", fileType, shellKeyName);
string lowregPathFolder = string.Format(@"{0}\shell\{1}\command", "Folder", shellKeyName); string regPathFolder = string.Format(@"{0}\shell\{1}\", "Folder", shellKeyName);
Registry.ClassesRoot.DeleteSubKeyTree(lowregPath); Registry.ClassesRoot.DeleteSubKeyTree(regPath);
Registry.ClassesRoot.DeleteSubKeyTree(lowregPathFolder); Registry.ClassesRoot.DeleteSubKeyTree(regPathFolder);
FileInfo[] files = di.GetFiles();
if (di.Exists == true) { foreach(FileInfo fi in files) { fi.Delete(); } di.Delete(); } } |
등록된 레지스트리를 제거하고 폴더 또한 제거해주는 함수 입니다. 하위경로에 있는 레지스트리를 먼저 제거 한 뒤 상위경로에 있는 레지스트리를 제거 해주고 있습니다. 또한 FileInfo를 사용하여 Dictory에 존재하는 파일들을 FileInfo배열에 저장 후 파일들을 제거한 뒤 폴더를 제거하고 있습니다. |
입력한 태그와 보안등급을 파일로 저장하는 부분은 조성준 조원이 이미 하였으므로 생략합니다.
폴더에 대한 ContxtMenu |
파일에 대한 ContxtMenu |
|
|