2012-12-21 4 views
0

간단한 응용 프로그램을 사용하여 레지스트리에서 사용자 프로필 항목을 삭제하려고하는데 문제가 발생했습니다. 그래서 일단 값 중 하나를 기반으로 레지스트리 키를 삭제 하시겠습니까?

, 나는 다음과 같은 코드를 통해 ProfileList에있는 모든 하위 키 받고 있어요 : 거기에서

List<string> KeyList = new List<string>(); 

     RegistryKey ProfileList = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\\Microsoft\Windows NT\\CurrentVersion\\ProfileList\\"); 
     foreach (string ProfileKey in ProfileList.GetSubKeyNames()) 
     { 
      KeyList.Add(ProfileKey); 
     } 

을, 나는 그 각각의 키의하는 ProfileImagePath 값을 받고에 추가 해요 확인 된 목록 상자 :

그런 다음 사용자가 삭제 버튼을 클릭하면 응용 프로그램이 확인 된 사용자 프로필을 삭제하도록합니다. 그러나 각 체크 된 항목 (C :/Users/Name과 비슷한)의 값을 가져와 삭제할 레지스트리 키를 결정해야합니다. foreach 루프에서이 작업을 수행 할 수 있다고 가정합니다. 그러나 어떻게 확신 할 수는 없습니다. 이 작업을 수행하는 가장 좋은 방법은 무엇입니까? 감사합니다. .

답변

2

여기 있습니다. 사용자가 "Delete Selected Users"와 같은 버튼을 클릭하면이 코드를 실행할 수 있습니다. 다음은 코드 쉘입니다.

string[] CheckItemsArray = new string[checkedListBox1.CheckedItems.Count+1]; 
     checkedListBox1.CheckedItems.CopyTo(CheckItemsArray, 0); 

     foreach (string CheckedItem in CheckItemsArray) 
     { 
      if (CheckedItem != null) 
      { 
       //your deleting logic here 

      } 
     } 
+0

감사합니다. 그것은 잘 작동합니다. – user1522456

+0

@ user1522456 문제는 없습니다. 다행 이네. 너를 도울 수있어서 좋았어. 행운을 빕니다! – FrostyFire

+0

음, 거의 작동합니다. 나는 논리 삭제를 마쳤지 만 체크 된 목록 상자의 항목을 배열에 복사하면 IndexOutOfRangeException이 발생합니다. 어떤 아이디어? 편집 : 신경 쓰지 마세요. 뭔가를 망 쳤어. 다시 한 번 감사드립니다! – user1522456

관련 문제