본문 바로가기

dev/windows6

[windows] 윈도우즈 서비스: 실제 등록된 서비스명 가지고 오기 HKLM\SYSTEM\CurrentControlSet\Services에 등록된 서비스의 이름 가져오는 방법본인 서비스의 이름을 가져오고 싶은 경우 MSDN에서는 GetServiceKeyName을 소개하고있다. 이 api는 서비스의 display name을 가지고 key name을 가져오는 기능을 하지만 특정 경우 이름 값을 못하는 상황이 발생한다. 만약 위 레지스트리 경로 밑에 ServiceA, ServiceB 라는 이름의 키가 있고 ImagePath, DisplayName 값의 데이터가 동일하다면 GetServiceKeyName 으로는 ServiceA 뿐만 얻을 수 있다. ServiceB를 얻으려면(ServiceB에 의해 트리거된 프로세스에서) 시스템의 서비스를 나열한 후 프로세스 ID를 비교하는 방법.. 2017. 5. 30.
[windows] 외부에서 서비스 제어 못하게 하기 참고: https://msdn.microsoft.com/en-us/library/windows/desktop/ms685996(v=vs.85).aspx본인이 만든 windows service를 작업관리자나 sc 등의 명령으로 정지 못하게 하고 싶은 경우 SERVICE_STATUS의 dwControlsAccepted 값을 제어함으로 목적을 달성할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27BOOL Lock(SERVICE_STATUS_HANDLE hServiceStatus) { SERVICE_STATUS ss; ss.dwCheckPoint = 0; ss.dwControlsAccepted = 0; // 어떤 제어 요청.. 2017. 5. 23.
[windows] DISM을 이용한 SNMP 기능 켜기 참고: https://msdn.microsoft.com/en-us/windows/hardware/commercialize/manufacture/desktop/deployment-image-servicing-and-management--dism--command-line-options윈도우즈 7 이상에서는 '윈도우즈 기능 켜기/끄기' 관리도구로 DISM(Deployment Image Servicing and Management)을 제공한다.(여러가지 배포, 관리 기능은 위의 링크 참고) 이를 사용해 command line에서도 윈도우즈 기능을 관리할 수 있다.step 1: 먼저 cmd를 관리자 모드로 실행한다.step 2: DISM /Online /Enable-Feature /FeatureName:SNMPs.. 2017. 5. 23.
[windows] 함수 동적 링크하기 (Run-Time Dynamic Linking) 참고: https://msdn.microsoft.com/en-us/library/ms810279.aspx특정 운영체제는 지원하지 않는 함수를 사용하고 싶을 때(예: Wow64DisableWow64FsRedirection) 컴파일 시간에 링크하는 대신 프로그램이 실행되는 도중 함수의 사용 가능 여부를 판단하여 실행하도록 할 수 있다. 1 2 3 4 5 6 7typedef BOOL WINAPI fntype_Wow64DisableWow64FsRedirection(PVOID *OldValue); auto pfnWow64DisableWow64FsRedirection = (fntype_Wow64DisableWow64FsRedirection*)GetProcAddress(GetModuleHandle(_T("kernel.. 2017. 5. 23.
[windows] 느린 윈도우 빠르게 만들기(애니메이션 효과 제거, 성능 향상) 윈도우즈는 버전업을 거듭하면서 더 예쁘게, 더 자연스럽게 보이기 위해 다양한 요소와 애니메이션이 추가되어 왔습니다. 하지만 저사양 컴퓨터는 항상 존재하기에 그래픽 요소의 처리 때문에 성능이 저하되는 상황을 종종 볼 수 있습니다. 프로그램을 부드럽게 스르륵 열고, 그림자를 표현하고, 아이콘 드래그시 내용보기 등이 불필요한 경우가 있는데 윈도우즈는 이런 옵션을 끌 수 있는 방법도 제공합니다.step 1: '윈도우버튼+r'을 눌러 실행창을 연다음 'sysdm.cpl'을 입력 후 확인을 누릅니다. step 2: 시스템 속성 창이 뜨면 '고급(advanced)' 탭의 '성능(performance)' 섹션의 '설정(settings)'을 누릅니다. step 3: 성능 옵션 창에서 ux 관련 요소를 사용할지 말지를 결.. 2016. 5. 9.
[windows] 윈도우에서 프로세스 강제 종료하기 windows에서 프로세스 강제 종료하기 작업도중 컴퓨터가 느려지거나 원하지 않는 프로그램이 실행되었을 경우 일반적인 방법으로 프로그램을 종료할 수 없다면 명령 프롬프트에서 강제 종료를 시도해 볼 수 있다. step 1: 다음 이미지와 같이 윈도우즈 시작 버튼을 우클릭 하여 관리자 모드의 명령 프롬프트를 실행한다. step 2: tasklist 명령어를 이용해 프로그램의 pid(process id)를 알아낸다.이 예에서 종료하고자 하는 프로그램은 notepad.exe고 이는 메모장이다. pid는 3212로 검색된다. step 3: taskkill 명령어로 해당 pid를 가진 프로그램을 강제 종료한다.옵션은 다음과 같다.taskkill /PID [PID] /F note: 윈도우즈 작업 관리자를 통해서도 동.. 2016. 3. 16.