Notice
Recent Posts
Recent Comments
Link
- lumenFC 축구 동호회
- 마샤블
- 웍스프레소
- 소셜@나눔<소셜미디어나눔연구소>
- 리버스코어
- LAIN
- LAIN 이사한 블로그
- TeamCR@K
- Sunnyday
- 보안 걱정이
- 리버싱 학습
- securityfirst_jo
- Practical Security Blog
- 세상, 그 유쾌한 전장
- 악성코드관련블로그
- Back to the Mac
- 패킷분석입문
- PacketInside / 네트워크 패킷 분석 블로그
- 침해사고분석 :: 네이버 블로그
- 소프트웨어 기술자경력관리시스템
- JK.Moon
- 자바 온라인학습
- Ezbeat의 도서관
- Dreams of a Final Journey
- IT eBooks - Free Download - Bi…
- Index of /madchat/coding/rever…
- Security Insight
- Reversing war game
- 고길고기
- clamav
- zerowine
- FORENSIC-PROOOF
- jquery 예제
- 조대협의블로그
- 국가과학기술인력개발원 교육포털 사이트
- 빅데이터, splunk
- 지식을 연주하는 사람
- malware analysis system
- 건국대토익스피킹
- 소프트웨어개발 및 협업도구
kisoo
WINDOW EXPLORER 레지스트리 변경 후 실시간으로 탐색기에 반영 하기 (windows explorer refresh) 본문
01.About Programming /9..VC++
WINDOW EXPLORER 레지스트리 변경 후 실시간으로 탐색기에 반영 하기 (windows explorer refresh)
JamesK78 2009. 9. 9. 13:46내가 구현 하려던 기능은 탐색기에 나타나는 볼륨을 HIDE 시키고 HIDE 된 볼륨을 다시 보이게 하는 기능 이었다.
문제는 레지스트리 값을 변경 해도 그것이 실시간으로 윈도우에 반영이 안되었던 부분 이었다.
오늘은 volume 을 HIDE/SHOW 하는 부분에 대해서 설명 하도록 해 보겠다.
회사 에어컨이 빵빵해서 콧물이 나오는 구만 ㅡ,ㅡ
볼륨을 hide 시키는 방법
key : HKLU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\EXPLORER
data key : NoDrives
data value : type DWORD or BINARY
아래는 각 드라이브 에 대한 NoDrives 값이다.
숨기려고 하는 볼륨을 값을 NoDrives 에 써주면 된다. 물론 멀티 드라이브를 HIDE 시키고 싶으면
계산을 해주면 된다.
또 한가지 중요 한 부분은 위의 KEY 가 HKLM 에도 존재 한다는 것이다.
만약 HKLM 에 적용 하게 되면 모든 사용자에 적용이 된다. 따라서 HKLU 에 적용해도 HKLM 에
적용한 값이 먼저 적용이 되므로 HKLU 에 적용 된 것은 무효가 된다.
고로 HKLU 에 적용 하도록 해야 한다.
msdn url : http://technet.microsoft.com/en-us/library/cc938267.aspx
그럼 다음 무엇을 해야 하나?? 난 처음에 이렇게 하면 끝인 줄 알았다.
하지만 탐색기나 WINDOW 에 바뀐 부분을 갱신을 시켜 줘야 했다.
탐색기 갱신 하기
여기서 strLetter 값은 "d:\\" 와 같이 볼륨 string 이다.
주의 할 사항은 ":\\" 를 꼭 붙혀줘야 한다.
자 이제 확인해 보자.
탐색기를 띄어 놓고 해봐도 hide/show 가 실시간으로 된다.
몇시간 삽질 하고 느낀점은
느낀점이 있다면 windows API 를 잘 활용 하자는 것이다. ㅡㅡ
WINDOW API 는 우리가 생각하는 것들을 쉽게 잘 만들어 두었다.
나처럼 삽질 하지 않길 바라며 개발자 들이여 WINDOW API 를 잘 찾아보자.
문제는 레지스트리 값을 변경 해도 그것이 실시간으로 윈도우에 반영이 안되었던 부분 이었다.
오늘은 volume 을 HIDE/SHOW 하는 부분에 대해서 설명 하도록 해 보겠다.
회사 에어컨이 빵빵해서 콧물이 나오는 구만 ㅡ,ㅡ
볼륨을 hide 시키는 방법
key : HKLU\SOFTWARE\MICROSOFT\WINDOWS\CURRENTVERSION\POLICIES\EXPLORER
data key : NoDrives
data value : type DWORD or BINARY
아래는 각 드라이브 에 대한 NoDrives 값이다.
숨기려고 하는 볼륨을 값을 NoDrives 에 써주면 된다. 물론 멀티 드라이브를 HIDE 시키고 싶으면
계산을 해주면 된다.
또 한가지 중요 한 부분은 위의 KEY 가 HKLM 에도 존재 한다는 것이다.
만약 HKLM 에 적용 하게 되면 모든 사용자에 적용이 된다. 따라서 HKLU 에 적용해도 HKLM 에
적용한 값이 먼저 적용이 되므로 HKLU 에 적용 된 것은 무효가 된다.
고로 HKLU 에 적용 하도록 해야 한다.
msdn url : http://technet.microsoft.com/en-us/library/cc938267.aspx
voulume data value A 1 00 00 00
B 2 00 00 00
C 4 00 00 00
D 8 00 00 00
E 16 00 00 00
F 2 00 00 00
G 64 00 00 00
H 128 00 00 00
I 00 1 00 00
J 00 2 00 00
K 00 4 00 00
L 00 8 00 00
M 00 16 00 00
N 00 32 00 00
O 00 64 00 00
P 00 128 00 00
Q 00 00 1 00
R 00 00 2 00
S 00 00 4 00
T 00 00 8 00
U 00 00 16 00
V 00 00 32 00
W 00 00 64 00
X 00 00 128 00
Y 00 00 00 1
Z 00 00 00 2 |
그러나 중요한 사항은 레지스트리에 NoDrives 값을 셋팅 한 후이다.
볼륨을 숨기고 보이게 할 때 마다 재부팅을 하거나 explorer.exe 를 재실행 할 수는 없는 노릇이다.
(ㅡㅡ; 나도 처음엔 explorer.exe 를 kill 한 후 재실행 했었다. ㅡㅡ;;;)
탐색기를 일일이 찾아서 REFRESH? F5 키를 눌러도 적용이 안된다.
우리는 windows API 가 제공하는 기능을 잘 활용 하면 된다.
처음엔 WINDOW SETTION 값이 변경 되었다는 것을 WINDOW SYSTEM 에 BROADCAST 로 알려 준다.
윈도우 시스템 SETTING 값 변경 MESSAGE
(ㅡㅡ; 나도 처음엔 explorer.exe 를 kill 한 후 재실행 했었다. ㅡㅡ;;;)
탐색기를 일일이 찾아서 REFRESH? F5 키를 눌러도 적용이 안된다.
우리는 windows API 가 제공하는 기능을 잘 활용 하면 된다.
처음엔 WINDOW SETTION 값이 변경 되었다는 것을 WINDOW SYSTEM 에 BROADCAST 로 알려 준다.
윈도우 시스템 SETTING 값 변경 MESSAGE
DWORD dwResult = 0;
SendMessageTimeout(HWND_BROADCAST,WM_SETTINGCHANGE,0,0,SMTO_ABORTIFHUNG,100,&dwResult); 또는 ,
::SendMessage( HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0 ); 를 사용 해도 된다. |
그럼 다음 무엇을 해야 하나?? 난 처음에 이렇게 하면 끝인 줄 알았다.
하지만 탐색기나 WINDOW 에 바뀐 부분을 갱신을 시켜 줘야 했다.
탐색기 갱신 하기
SHChangeNotify(SHCNE_DRIVEREMOVED, SHCNF_PATH, strLetter,NULL); |
여기서 strLetter 값은 "d:\\" 와 같이 볼륨 string 이다.
주의 할 사항은 ":\\" 를 꼭 붙혀줘야 한다.
자 이제 확인해 보자.
탐색기를 띄어 놓고 해봐도 hide/show 가 실시간으로 된다.
몇시간 삽질 하고 느낀점은
느낀점이 있다면 windows API 를 잘 활용 하자는 것이다. ㅡㅡ
WINDOW API 는 우리가 생각하는 것들을 쉽게 잘 만들어 두었다.
나처럼 삽질 하지 않길 바라며 개발자 들이여 WINDOW API 를 잘 찾아보자.
Comments