10. [pywin32] CancelWaitableTimer 함수

pywin32/win32event|2020. 9. 11. 00:26

CancelWaitableTimer(handle)

 

동작하는 타이머를 종료하는 함수입니다.

 

인자로는 handle이 있습니다.

 

handle은 종료시킬 타이머의 핸들값입니다.

 

import win32event
import win32con
import win32api

evtHandle = win32event.CreateWaitableTimer(None, win32con.FALSE, "timerTest")

cnt=0
while True:
    x = win32event.WaitForSingleObject(evtHandle, win32event.INFINITE)
    if x == win32event.WAIT_OBJECT_0:
        print(f"signaled #1")
        cnt+=1   
    elif x == win32event.WAIT_TIMEOUT:
        print(f"time out")
        break
    if cnt==5:
        win32event.CancelWaitableTimer(evtHandle)
        break

win32api.CloseHandle(evtHandle)

지금은 실행시켜도 아무차이도 못 느끼실겁니다.

 

이건 다음에 설명할 SetWaitableTimer에서 사용하겠습니다.ㅎㅎ

 

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

12. [pywin32] CreateMutex 함수  (0) 2020.09.16
11. [pywin32] SetWaitableTimer 함수  (0) 2020.09.12
9. [pywin32] OpenWaitableTimer 함수  (0) 2020.09.10
8. [pywin32] CreateWaitableTimer 함수  (0) 2020.09.09
7. [pywin32] PulseEvent 함수  (0) 2020.08.31

댓글()

9. [pywin32] OpenWaitableTimer 함수

pywin32/win32event|2020. 9. 10. 00:56

PyHANDLE = OpenWaitableTimer(desiredAccess, bInheritHandle , timerName )

 

CreateWaitableTimer로 생성된 타이머를 오픈하는 함수입니다.

 

인자로는 desiredAccess : int, bInheritHandle : bool, timerName : str가 있습니다.

 

desiredAccess는 접근 권한을 나타냅니다.

 - win32event.EVENT_ALL_ACCESS: 객체에 대한 모든 권한을 부여합니다.

 - win32event.EVENT_MODIFY_STATE: 수정상태로 SetWaitableTimer, CancelWaitableTimer 함수 사용 시 필요합니다.

 - win32event.SYNCHRONIZE: (NT만 가능) 동기화를 위해 사용합니다.

 

bInheritHandle은 TRUE/FALSE 둘 중 하나를 가집니다.

 - win32con.TRUE: 호출하는 프로그램의 핸들을 상속합니다.

 - win32con.FALSE: 호출하는 프로그램의 핸들을 상속하지 않습니다.

 

name은 CreateWaitableTimer 함수 사용 시 사용했던 이벤트의 이름입니다.

 

Return 값은 오픈한 이벤트의 핸들값입니다

 

import win32event
import win32con
import win32api

evtHandle = win32event.OpenWaitableTimer(win32event.EVENT_ALL_ACCESS, win32con.FALSE, "timerTest")

win32api.CloseHandle(evtHandle)

참고로 위의 예제는 CreateWaitableTimer 함수의 예제를 실행시킨 후 파이썬을 하나 더 실행시켜서 해보셔야 합니다.

 

그렇지 않으면 timerTest라는 이름의 타이머를 찾을 수 없다고 나옵니다

 

[pywin32/win32event] - 8. [pywin32] CreateWaitableTimer 함수

 

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

11. [pywin32] SetWaitableTimer 함수  (0) 2020.09.12
10. [pywin32] CancelWaitableTimer 함수  (0) 2020.09.11
8. [pywin32] CreateWaitableTimer 함수  (0) 2020.09.09
7. [pywin32] PulseEvent 함수  (0) 2020.08.31
6. [pywin32] ResetEvent 함수  (0) 2020.08.31

댓글()

8. [pywin32] CreateWaitableTimer 함수

pywin32/win32event|2020. 9. 9. 00:48

PyHANDLE = CreateWaitableTimer(TimerAttributes, ManualReset , TimerName )

 

대기 타이머를 생성하는 함수입니다.

 

인자로는 TimerAttributes : PySECURITY_ATTRIBUTES, ManualReset : bool, TimerName : str 가 있습니다.

 

TimerAttributes는 이벤트에 대한 보안 속성이며, None으로 두어도 무방합니다.

 

ManualReset은 win32con.TRUE/FALSE 2개의 값을 갖을 수 있습니다.

 - win32con.TRUE: 타이머 리셋을 개발자가 수동으로 해주어야 합니다.

 - win32con.FALSE: 타이머 리셋이 자동으로 호출됩니다.

그런데 제가 사용해보니 win32con.TRUE는 사용법을 모르겠더군요... 그래서 저는 어쩔 수 없이 win32con.FLASE로 진행했습니다.

 

Name: 문자열 값이며, 타이머의이름을 지정해줍니다.

 

import win32event
import win32con
import win32api

evtHandle = win32event.CreateWaitableTimer(None, win32con.FALSE, "timerTest")

while True:
    x = win32event.WaitForSingleObject(evtHandle, 5000)
    if x == win32event.WAIT_OBJECT_0:
        print(f"signaled #1")
        
    elif x == win32event.WAIT_TIMEOUT:
        print(f"time out")
        break

win32api.CloseHandle(evtHandle)

timerTest 라는 이름의 타이머가 생성되었습니다.

 

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

10. [pywin32] CancelWaitableTimer 함수  (0) 2020.09.11
9. [pywin32] OpenWaitableTimer 함수  (0) 2020.09.10
7. [pywin32] PulseEvent 함수  (0) 2020.08.31
6. [pywin32] ResetEvent 함수  (0) 2020.08.31
5. [pywin32] SetEvent 함수  (0) 2020.08.31

댓글()

7. [pywin32] PulseEvent 함수

pywin32/win32event|2020. 8. 31. 00:58

PulseEvent(hEvent)

 

이벤트를 셋트로 설정 후 리셋 시키는 함수입니다. SetEvent 함수와 ResetEvent 함수를 순서대로 호출한다고 봐도 무방할 것 같습니다.

 

인자로는 hEvent : PyHANDLE 가 있습니다.

 

hEvent: 셋트 시킬 이벤트의 핸들입니다. 보통 OpenEvent 함수의 리턴값을 사용하게 됩니다.

 

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

9. [pywin32] OpenWaitableTimer 함수  (0) 2020.09.10
8. [pywin32] CreateWaitableTimer 함수  (0) 2020.09.09
6. [pywin32] ResetEvent 함수  (0) 2020.08.31
5. [pywin32] SetEvent 함수  (0) 2020.08.31
4. [pywin32] OpenEvent 함수  (0) 2020.08.31

댓글()

6. [pywin32] ResetEvent 함수

pywin32/win32event|2020. 8. 31. 00:48

ResetEvent(hEvent)

 

이벤트를 리셋 시키는 함수입니다.

 

인자로는 hEvent : PyHANDLE 가 있습니다.

 

hEvent: 리셋시킬 이벤트 핸들입니다. 보통 OpenEvent 함수의 리턴값을 사용합니다.

 

이 함수를 실험하기 전에 WaitForSingleObject 함수의 예제를 아래와 같이 바꾸고 실행시켜 줍니다.

import win32event
import win32con
import win32api

evtHandle = win32event.CreateEvent(None, win32con.TRUE, win32con.TRUE, "eventTest")

while True:
    x = win32event.WaitForSingleObject(evtHandle, 3000)
    if x == win32event.WAIT_OBJECT_0:
        print(f"signaled #1")
    elif x== win32event.WAIT_TIMEOUT:
        print(f"time out")
        break

win32api.CloseHandle(evtHandle)

이벤트 초기 상태를 셋트하고, 자동 리셋을 해제 시켜서 signaled #1이 무한 실행될 것입니다.

 

그리고 아래의 ResetEvent 예제를 실행시켜 봅시다.

import win32event
import win32con
import win32api

evtHandle = win32event.OpenEvent(win32event.EVENT_ALL_ACCESS, win32con.FALSE, "eventTest")

win32event.ResetEvent(evtHandle)

win32api.CloseHandle(evtHandle)

아래와 같이 signaled #1이 무한 발생하다가 이벤트를 리셋시키는 순간 정지됩니다. 그 후 3초(3000ms)가 지나면 타임 아웃이 걸립니다.

 

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

8. [pywin32] CreateWaitableTimer 함수  (0) 2020.09.09
7. [pywin32] PulseEvent 함수  (0) 2020.08.31
5. [pywin32] SetEvent 함수  (0) 2020.08.31
4. [pywin32] OpenEvent 함수  (0) 2020.08.31
3. [pywin32] WaitForSingleObject 함수  (0) 2020.08.31

댓글()

1. [pywin32] win32process 소개

pywin32/win32process|2020. 8. 31. 00:36

윈도우의 프로세스와 쓰레드를 관리하는 api를 다루는 모듈입니다.

 

win32job이 프로세스와 쓰레드를 job으로써 관리하는 모듈이라면 win32process는 프로세스와 쓰레드 그 자체를 다루는 모듈로 보입니다.

 

다음과 같은 46가지 함수를 지원합니다.

 

  • AttachThreadInput - 보류
  • CreateProcess - 8
  • CreateProcessAsUser - 보류
  • CreateRemoteThread - 보류
  • EnumProcessModules - 11
  • EnumProcessModulesEx - 11
  • EnumProcesses - 11
  • ExitProcess - 9
  • GetCurrentProcess - 10
  • GetCurrentProcessId - 10
  • GetExitCodeProcess - 9
  • GetExitCodeThread - 5
  • GetGuiResources - 12
  • GetModuleFileNameEx - 11
  • GetPriorityClass - 13
  • GetProcessAffinityMask - 13
  • GetProcessId - 10
  • GetProcessIoCounters - 12
  • GetProcessMemoryInfo - 12
  • GetProcessPriorityBoost - 13
  • GetProcessShutdownParameters - 13
  • GetProcessTimes - 12
  • GetProcessVersion - 12
  • GetProcessWindowStation - win32service 에서 다룸
  • GetProcessWorkingSetSize - 13
  • GetStartupInfo - 8
  • GetThreadIOPendingFlag - 5
  • GetThreadPriority - 5
  • GetThreadPriorityBoost - 5
  • GetThreadTimes - 5
  • GetWindowThreadProcessId - 5
  • IsWow64Process - 8
  • ResumeThread - 4
  • STARTUPINFO - 8
  • SetPriorityClass - 14
  • SetProcessAffinityMask - 14
  • SetProcessPriorityBoost - 14
  • SetProcessShutdownParameters - 14
  • SetProcessWorkingSetSize - 14
  • SetThreadAffinityMask - 7
  • SetThreadIdealProcessor - 7
  • SetThreadPriority - 6
  • SetThreadPriorityBoost - 6
  • SuspendThread - 3
  • TerminateProcess - 9
  • beginthreadex - 2

 

[pywin32/win32process] - 2. [pywin32] beginthreadex 함수

 

2. [pywin32] beginthreadex 함수

PyHANDLE, int = beginthreadex(sa, stackSize , entryPoint , args , flags ) 쓰레드를 생성하는 함수입니다. 인자로는 sa : PySECURITY_ATTRIBUTES, stackSize : int, entryPoint : function, args : tuple, fla..

ssjune.tistory.com

[pywin32/win32process] - 3. [pywin32] SuspendThread 함수

 

3. [pywin32] SuspendThread 함수

int = SuspendThread(handle) 쓰레드를 정지시키는 함수입니다. 인자로는 handle : PyHANDLE 이 있습니다. handle는 정지시킬 쓰레드 핸들입니다. 리턴 값은 int 로 해당 쓰레드의 이전까지의 정지 카운트입니다

ssjune.tistory.com

[pywin32/win32process] - 4. [pywin32] ResumeThread 함수

 

4. [pywin32] ResumeThread 함수

int = ResumeThread(handle) 정지된 쓰레드를 재개하는 함수입니다. SuspendThread 함수가 Suspend count를 올린다면 ResumeThread 함수로 count를 낮춰서 0이되면 쓰레드가 재개됩니다. 인자로는 handle : PyHAND..

ssjune.tistory.com

[pywin32/win32process] - 5. [pywin32] GetThread... 관련 함수

 

5. [pywin32] GetThread... 관련 함수

이번에 설명할 함수는 다음의 6개 함수에 대해서 설명하려고 합니다. 1. int = GetExitCodeThread(handle) 쓰레드의 종료 코드를 반환하는 함수입니다. 쓰레드 마지막에 return X 라고 쓰면 X값이 종료 코드

ssjune.tistory.com

[pywin32/win32process] - 6. [pywin32] SetThreadPriority & Boost 함수

 

6. [pywin32] SetThreadPriority & Boost 함수

1. SetThreadPriority(handle, nPriority) 쓰레드의 우선순위 레벨을 설정하는 함수입니다. 인자로는 handle : PyHANDLE, nPriority : int가 있습니다. handle은 쓰레드의 핸들값입니다. nPriority는 쓰레드의 설..

ssjune.tistory.com

[pywin32/win32process] - 7. [pywin32] SetThreadAffinityMask & SetThreadIdealProcessor 함수

 

7. [pywin32] SetThreadAffinityMask & SetThreadIdealProcessor 함수

1. int = SetThreadAffinityMask(hThread, ThreadAffinityMask ) 쓰레드의 CPU 선호도를 설정합니다. 선호도란 멀티 프로세서의 경우 어떤 CPU에 작업을 할당할 지를 말합니다. 위의 이미지는 작업관리자 > 프로..

ssjune.tistory.com

[pywin32/win32process] - 8. [pywin32] CreateProcess 및 기타 함수

 

8. [pywin32] CreateProcess 및 기타 함수

1. PySTARTUPINFO = STARTUPINFO() STARTUPINFO 구조체를 생성하는 함수입니다. 프로세스를 만들 때 사용하기 때문에 처음에 호출해주어야 합니다. 다음의 멤버를 갖고 있습니다. integer dwX: 왼쪽 위의 x 좌표,.

ssjune.tistory.com

[pywin32/win32process] - 9. [pywin32] ExitProcess & TerminateProcee 및 관련 함수

 

9. [pywin32] ExitProcess & TerminateProcee 및 관련 함수

1. ExitProcess(exitCode) 현재 프로세스를 종료시키는 함수입니다. 인자로는 exitCode : int가 있습니다. exitCode: 프로세스가 종료될 때 종료 코드를 설정합니다. 2. TerminateProcess(handle, exitCode) 지정..

ssjune.tistory.com

[pywin32/win32process] - 10. [pywin32] GetProcess... 관련 함수 - 1

 

10. [pywin32] GetProcess... 관련 함수 - 1

1. int = GetCurrentProcess() 현재 프로세스의 핸들값을 반환하는 함수입니다. 리턴값은 현재 프로세스의 핸들값입니다. 그런데 보안을 위해서인지 -1을 반환하는 것으로 고정되어 있습니다. 2. int = GetC

ssjune.tistory.com

[pywin32/win32process] - 11. [pywin32] EnumProcess 관련 함수

 

11. [pywin32] EnumProcess 관련 함수

1. (long,....) = EnumProcesses() 현재 동작하는 프로세스를 열거하는 함수입니다. 리턴값은 현재 동작하는 프로세스 아이디 목록입니다. 2. (long,....) = EnumProcessModules(hProcess) 특정 프로세스가 사용하..

ssjune.tistory.com

[pywin32/win32process] - 12. [pywin32] GetProcess... 관련 함수 - 2

 

12. [pywin32] GetProcess... 관련 함수 - 2

1. int = GetGuiResources(Process, Flags ) 프로세스의 GDI 혹은 USER Object 핸들 갯수를 반환하는 함수입니다. GDI Object는 그래픽 출력과 관련있는 Object를 말하는 듯 합니다.(ex. bitmap, brush...)  - MS..

ssjune.tistory.com

[pywin32/win32process] - 13. [pywin32] GetProcess... 관련 함수 - 3

 

13. [pywin32] GetProcess... 관련 함수 - 3

1. int = GetPriorityClass(handle) 프로세스의 우선순위를 클래스를 반환하는 함수입니다. 인자로는 handle : PyHANDLE 가 있습니다. handle: 프로세스의 핸들값입니다. 리턴값은 다음과 같습니다. 값 이름 의미

ssjune.tistory.com

[pywin32/win32process] - 14. [pywin32] SetProcess... 관련 함수

 

14. [pywin32] SetProcess... 관련 함수

1. SetPriorityClass(handle, dwPriorityClass) 프로세스의 우선순위 클래스를 설정하는 함수입니다. 인자로는 handle : PyHANDLE, dwPriorityClass : int 가 있습니다. handle: 프로세스의 핸들값입니다. dwPrior..

ssjune.tistory.com

 

반응형

댓글()

5. [pywin32] SetEvent 함수

pywin32/win32event|2020. 8. 31. 00:32

SetEvent(hEvent)

 

이벤트를 셋트 시키는 함수입니다.

 

인자로는 hEvent : PyHANDLE 가 있습니다.

 

hEvent: 셋트 시킬 이벤트의 핸들입니다. 보통 OpenEvent 함수의 리턴값을 사용하게 됩니다.

 

import win32event
import win32con
import win32api

evtHandle = win32event.OpenEvent(win32event.EVENT_ALL_ACCESS, win32con.FALSE, "eventTest")

win32event.SetEvent(evtHandle)

win32api.CloseHandle(evtHandle)

위의 함수 예제도 WaitForSingleObject 함수의 예제를 실행시킨 후 파이썬을 하나 더 실행시켜서 해보셔야 합니다.

* 현재 WaitForSingleObject 함수의 시간이 3초(3000ms)로 되어 있는데 시간이 부족하면 더 늘리셔도 무방합니다.

 

[pywin32/win32event] - 3. [pywin32] WaitForSingleObject 함수

 

3. [pywin32] WaitForSingleObject 함수

int = WaitForSingleObject(hHandle, milliseconds ) 이벤트 하나를 등록시켜놓고 이벤트가 셋트 되면 이를 알려주는 함수입니다. 인자로는 hHandle : PyHANDLE, milliseconds : int 가 있습니다. hHandle: 대기상..

ssjune.tistory.com

 

실행 결과 셋트되었습니다.

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

7. [pywin32] PulseEvent 함수  (0) 2020.08.31
6. [pywin32] ResetEvent 함수  (0) 2020.08.31
4. [pywin32] OpenEvent 함수  (0) 2020.08.31
3. [pywin32] WaitForSingleObject 함수  (0) 2020.08.31
2. [pywin32] CreateEvent 함수  (0) 2020.08.30

댓글()

4. [pywin32] OpenEvent 함수

pywin32/win32event|2020. 8. 31. 00:22

PyHANDLE = OpenEvent(desiredAccess, bInheritHandle , name )

 

CreateEvent로 만들어진 이벤트를 여는 함수입니다.

 

인자로는 desiredAccess : int, bInheritHandle : bool, name : PyUnicode 가 있습니다.

 

desiredAccess는 접근 권한을 나타냅니다.

 - win32event.EVENT_ALL_ACCESS: 객체에 대한 모든 권한을 부여합니다.

 - win32event.EVENT_MODIFY_STATE: 수정상태로 SetEvent, ResetEvent, PulseEvent 함수 사용 시 필요합니다.

 - win32event.SYNCHRONIZE: (NT만 가능) 동기화를 위해 사용합니다.

 

bInheritHandle은 TRUE/FALSE 둘 중 하나를 가집니다.

 - win32con.TRUE: OpenEvent는 호출하는 프로그램의 핸들을 상속합니다.

 - win32con.FALSE: OpenEvent는 호출하는 프로그램의 핸들을 상속하지 않습니다.

 

name은 CreateEvent 함수 사용 시 사용했던 이벤트의 이름입니다.

 

Return 값은 오픈한 이벤트의 핸들값입니다.

 

import win32event
import win32con
import win32api

evtHandle = win32event.OpenEvent(win32event.EVENT_ALL_ACCESS, win32con.FALSE, "eventTest")

win32api.CloseHandle(evtHandle)

참고로 위의 예제는 WaitForSingleObject 함수의 예제를 실행시킨 후 파이썬을 하나 더 실행시켜서 해보셔야 합니다.

 

그렇지 않으면 eventTest 라는 이름의 이벤트를 찾을 수 없다고 나옵니다.

 

[pywin32/win32event] - 3. [pywin32] WaitForSingleObject 함수

 

3. [pywin32] WaitForSingleObject 함수

int = WaitForSingleObject(hHandle, milliseconds ) 이벤트 하나를 등록시켜놓고 이벤트가 셋트 되면 이를 알려주는 함수입니다. 인자로는 hHandle : PyHANDLE, milliseconds : int 가 있습니다. hHandle: 대기상..

ssjune.tistory.com

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

6. [pywin32] ResetEvent 함수  (0) 2020.08.31
5. [pywin32] SetEvent 함수  (0) 2020.08.31
3. [pywin32] WaitForSingleObject 함수  (0) 2020.08.31
2. [pywin32] CreateEvent 함수  (0) 2020.08.30
1. [pywin32] win32event 소개  (0) 2020.08.20

댓글()

3. [pywin32] WaitForSingleObject 함수

pywin32/win32event|2020. 8. 31. 00:08

int = WaitForSingleObject(hHandle, milliseconds )

 

이벤트 하나를 등록시켜놓고 이벤트가 셋트 되면 이를 알려주는 함수입니다.

 

인자로는 hHandle : PyHANDLE, milliseconds : int 가 있습니다.

 

hHandle: 대기상태로 둘 이벤트 핸들입니다.

 

milliseconds: 정한 시간 만큼만 이벤트가 대기하고, 시간이 지나면 타임 아웃이 발생합니다.

 - win32event.INFINITE: 대기 시간을 무한으로 설정합니다.

 

Return Value: 함수 성공 시 리턴값은 이벤트가 왜 대기 상태에서 깨어났는지에 따라 달라집니다,

 - win32event.WAIT_ABANDONED: 뮤텍스 객체가 종료되거 전 제대로 반환되지 않았을 때

 - win32event.WAIT_OBJECT_0: 이벤트가 셋트 되어서 깨어 났을 때

 - win32event.WAIT_TIMEOUT: milliseconds에서 정한 시간이 지나 타임 아웃이 발생했을 때

 

import win32event
import win32con
import win32api

evtHandle = win32event.CreateEvent(None, win32con.FALSE, win32con.FALSE, "eventTest")

while True:
    x = win32event.WaitForSingleObject(evtHandle, 3000)
    if x == win32event.WAIT_OBJECT_0:
        print(f"signaled #1")
        break
    elif x == win32event.WAIT_TIMEOUT:
        print(f"time out")
        break

win32api.CloseHandle(evtHandle)

CreateEvent 함수에서 추가된 코드로, 3초(3000ms)만큼 대기시킨다.

 

그 결과 타임 아웃이 발생하였다.

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

6. [pywin32] ResetEvent 함수  (0) 2020.08.31
5. [pywin32] SetEvent 함수  (0) 2020.08.31
4. [pywin32] OpenEvent 함수  (0) 2020.08.31
2. [pywin32] CreateEvent 함수  (0) 2020.08.30
1. [pywin32] win32event 소개  (0) 2020.08.20

댓글()

2. [pywin32] CreateEvent 함수

pywin32/win32event|2020. 8. 30. 23:54

PyHANDLE = CreateEvent(EventAttributes, bManualReset , bInitialState , Name )

 

이벤트를 생성하는 함수입니다.

 

인자로는 EventAttributes : PySECURITY_ATTRIBUTES, bManualReset : bool, bInitialState : bool, Name : PyUnicode 가 있습니다.

 

EventAttributes는 이벤트에 대한 보안 속성이며, None으로 두어도 무방합니다.

 

bManualReset은 win32con.TRUE/FALSE 2개의 값을 갖을 수 있습니다.

 - win32con.TRUE: win32event.ResetEvent 함수를 개발자가 수동으로 호출해주어야 합니다.

 - win32con.FALSE: win32event.SetEvent 함수 호출 후 자동으로 ResetEvent 함수가 호출됩니다.

 

bInitialState는 win32con.TRUE/FALSE 2개의 값을 갖을 수 있습니다.

 - win32con.TRUE: 최초 이벤트 상태가 셋트 상태입니다.

 - win32con.FALSE: 최초 이벤트 상태가 리셋 상태입니다.

 

Name: 문자열 값이며, 이벤트의 이름을 지정해줍니다.

 

import win32event
import win32con
import win32api

evtHandle = win32event.CreateEvent(None, win32con.FALSE, win32con.FALSE, "eventTest")

win32api.CloseHandle(evtHandle)

 

eventTest라는 이름으로 이벤트를 생성하였습니다.

* 생성된 이벤트는 win32api의 CloseHandle 함수를 닫을 수 있습니다.

반응형

'pywin32 > win32event' 카테고리의 다른 글

6. [pywin32] ResetEvent 함수  (0) 2020.08.31
5. [pywin32] SetEvent 함수  (0) 2020.08.31
4. [pywin32] OpenEvent 함수  (0) 2020.08.31
3. [pywin32] WaitForSingleObject 함수  (0) 2020.08.31
1. [pywin32] win32event 소개  (0) 2020.08.20

댓글()

1. [pywin32] win32gui 소개

pywin32/win32gui|2020. 8. 22. 00:50

윈도우의 gui 함수를 다루는 모듈입니다.

* win32 기반의 gui를 다루는 것 같습니다. mfc gui에 대한 함수를 다루는 모듈은 따로 있는 것으로 보였기 때문입니다.

 

다음의 330개 함수를 제공합니다.

 

  • AbortPath
  • AlphaBlend
  • AngleArc
  • AnimateWindow
  • AppendMenu
  • Arc
  • ArcTo
  • BeginPaint
  • BeginPath
  • BitBlt
  • BringWindowToTop
  • CallWindowProc
  • CheckMenuItem
  • CheckMenuRadioItem
  • ChildWindowFromPoint
  • ChildWindowFromPoint
  • Chord
  • ClientToScreen
  • CloseFigure
  • CloseWindow
  • CombineRgn
  • CombineTransform
  • CommDlgExtendedError
  • CopyIcon
  • CreateAcceleratorTable
  • CreateBitmap
  • CreateBrushIndirect
  • CreateCaret
  • CreateCompatibleBitmap
  • CreateCompatibleDC
  • CreateDC
  • CreateDialogIndirect
  • CreateEllipticRgnIndirect
  • CreateFontIndirect
  • CreateHatchBrush
  • CreateIconFromResource
  • CreateIconIndirect
  • CreateMenu
  • CreatePatternBrush
  • CreatePen
  • CreatePolygonRgn
  • CreatePopupMenu
  • CreateRectRgnIndirect
  • CreateRoundRectRgn
  • CreateSolidBrush
  • CreateWindow
  • CreateWindowEx
  • DefWindowProc
  • DeleteDC
  • DeleteMenu
  • DeleteObject
  • DestroyAccleratorTable
  • DestroyCaret
  • DestroyIcon
  • DestroyMenu
  • DestroyWindow
  • DialogBox
  • DialogBoxIndirect
  • DialogBoxIndirectParam
  • DialogBoxIndirectParam
  • DialogBoxParam
  • DispatchMessage
  • DragAcceptFiles
  • DragDetect
  • DrawAnimatedRects
  • DrawEdge
  • DrawFocusRect
  • DrawIcon
  • DrawIconEx
  • DrawMenuBar
  • DrawText
  • DrawTextW
  • Ellipse
  • EnableMenuItem
  • EnableWindow
  • EndDialog
  • EndPaint
  • EndPath
  • EnumChildWindows
  • EnumFontFamilies
  • EnumPropsEx
  • EnumThreadWindows
  • EnumWindows
  • EqualRgn
  • ExtCreatePen
  • ExtFloodFill
  • ExtTextOut
  • ExtractIcon
  • ExtractIconEx
  • FillPath
  • FillRect
  • FillRgn
  • FindWindow
  • FindWindowEx
  • FlashWindow
  • FlashWindowEx
  • FlattenPath
  • FrameRect
  • FrameRgn
  • GetActiveWindow
  • GetArcDirection
  • GetBkColor
  • GetBkMode
  • GetCapture
  • GetCaretPos
  • GetClassLong
  • GetClassName
  • GetClientRect
  • GetCurrentObject
  • GetCurrentPositionEx
  • GetCursor
  • GetCursorInfo
  • GetCursorPos
  • GetDC
  • GetDesktopWindow
  • GetDlgCtrlID
  • GetDlgItem
  • GetDlgItemInt
  • GetDlgItemText
  • GetDoubleClickTime
  • GetFocus
  • GetForegroundWindow
  • GetGraphicsMode
  • GetIconInfo
  • GetLayeredWindowAttributes
  • GetLayout
  • GetMapMode
  • GetMenu
  • GetMenuDefaultItem
  • GetMenuInfo
  • GetMenuItemCount
  • GetMenuItemID
  • GetMenuItemInfo
  • GetMenuItemRect
  • GetMenuState
  • GetMessage
  • GetMiterLimit
  • GetNextDlgGroupItem
  • GetNextDlgTabItem
  • GetObject
  • GetObjectType
  • GetOpenFileName
  • GetOpenFileNameW
  • GetParent
  • GetPath
  • GetPixel
  • GetPolyFillMode
  • GetROP2
  • GetRgnBox
  • GetSaveFileNameW
  • GetScrollInfo
  • GetStockObject
  • GetStretchBltMode
  • GetSubMenu
  • GetSysColor
  • GetSysColorBrush
  • GetSystemMenu
  • GetTextAlign
  • GetTextCharacterExtra
  • GetTextColor
  • GetTextExtentPoint32
  • GetTextFace
  • GetTextMetrics
  • GetUpdateRgn
  • GetViewportExtEx
  • GetViewportOrgEx
  • GetWindow
  • GetWindowDC
  • GetWindowExtEx
  • GetWindowLong
  • GetWindowOrgEx
  • GetWindowPlacement
  • GetWindowRect
  • GetWindowRgn
  • GetWindowRgnBox
  • GetWindowText
  • GetWorldTransform
  • GradientFill
  • HideCaret
  • ImageList_Add
  • ImageList_Create
  • ImageList_Destroy
  • ImageList_Draw
  • ImageList_DrawEx
  • ImageList_GetIcon
  • ImageList_GetImageCount
  • ImageList_LoadBitmap
  • ImageList_LoadImage
  • ImageList_Remove
  • ImageList_Replace
  • ImageList_ReplaceIcon
  • ImageList_SetBkColor
  • ImageList_SetOverlayImage
  • InitCommonControls
  • InitCommonControlsEx
  • InsertMenu
  • InsertMenuItem
  • InvalidateRect
  • InvalidateRgn
  • InvertRect
  • InvertRgn
  • IsChild
  • IsIconic
  • IsWindow
  • IsWindowEnabled
  • IsWindowVisible
  • LOGFONT
  • LineTo
  • ListView_SortItems
  • ListView_SortItemsEx
  • LoadCursor
  • LoadIcon
  • LoadImage
  • LoadMenu
  • MaskBlt
  • MessageBeep
  • MessageBox
  • ModifyMenu
  • ModifyWorldTransform
  • MoveToEx
  • MoveWindow
  • OffsetRgn
  • PaintDesktop
  • PaintRgn
  • PatBlt
  • PathToRegion
  • PeekMessage
  • Pie
  • PlgBlt
  • PolyBezier
  • PolyBezierTo
  • Polygon
  • Polyline
  • PolylineTo
  • PostMessage
  • PostQuitMessage
  • PostThreadMessage
  • PtInRect
  • PtInRegion
  • PumpMessages
  • PumpWaitingMessages
  • PyGetArraySignedLong
  • PyGetBufferAddressAndLen
  • PyGetMemory
  • PyGetString
  • PySetMemory
  • PySetString
  • RectInRegion
  • Rectangle
  • RedrawWindow
  • RegisterClass
  • RegisterDeviceNotification
  • RegisterWindowMessage
  • ReleaseCapture
  • ReleaseDC
  • RemoveMenu
  • ReplyMessage
  • RestoreDC
  • RoundRect
  • SaveDC
  • ScreenToClient
  • ScrollWindowEx
  • SelectObject
  • SendMessage
  • SendMessageTimeout
  • SetActiveWindow
  • SetArcDirection
  • SetBkColor
  • SetBkMode
  • SetCapture
  • SetCaretPos
  • SetCursor
  • SetDlgItemInt
  • SetDlgItemText
  • SetDoubleClickTime
  • SetFocus
  • SetForegroundWindow
  • SetGraphicsMode
  • SetLayeredWindowAttributes
  • SetLayout
  • SetMapMode
  • SetMenu
  • SetMenuDefaultItem
  • SetMenuInfo
  • SetMenuItemBitmaps
  • SetMenuItemInfo
  • SetMiterLimit
  • SetParent
  • SetPixel
  • SetPixelV
  • SetPolyFillMode
  • SetROP2
  • SetRectRgn
  • SetScrollInfo
  • SetStretchBltMode
  • SetTextAlign
  • SetTextCharacterExtra
  • SetTextColor
  • SetViewportExtEx
  • SetViewportOrgEx
  • SetWindowExtEx
  • SetWindowLong
  • SetWindowOrgEx
  • SetWindowPlacement
  • SetWindowPos
  • SetWindowRgn
  • SetWindowText
  • SetWorldTransform
  • Shell_NotifyIcon
  • ShowCaret
  • ShowWindow
  • StretchBlt
  • StrokeAndFillPath
  • StrokePath
  • SystemParametersInfo
  • TrackPopupMenu
  • TranslateAccelerator
  • TranslateMessage
  • TransparentBlt
  • UnregisterClass
  • UnregisterDeviceNotification
  • UpdateLayeredWindow
  • UpdateWindow
  • ValidateRgn
  • WaitMessage
  • WidenPath
  • WindowFromDC
  • WindowFromPoint
  • _TrackMouseEvent
  • set_logger

 

반응형

댓글()

1. [pywin32] win32event 소개

pywin32/win32event|2020. 8. 20. 00:39

윈도우의 대기 이벤트, 타이머, 뮤텍스, 세마포어에 관련된 모듈입니다.

 

다음의 20개 함수를 제공합니다.

 

  • CreateEvent
  • WaitForSingleObject
  • OpenEvent
  • SetEvent
  • ResetEvent
  • PulseEvent
  • CreateWaitableTimer
  • OpenWaitableTimer
  • CancelWaitableTimer
  • SetWaitableTimer
  • CreateMutex
  • OpenMutex
  • ReleaseMutex
  • CreateSemaphore
  • OpenSemaphore
  • ReleaseSemaphore
  • WaitForMultipleObjects
  • WaitForSingleObjectEx
  • WaitForMultipleObjectsEx
  • WaitForInputIdle

 

[pywin32/win32event] - 2. [pywin32] CreateEvent 함수

 

2. [pywin32] CreateEvent 함수

PyHANDLE = CreateEvent(EventAttributes, bManualReset , bInitialState , Name ) 이벤트를 생성하는 함수입니다. 인자로는 EventAttributes : PySECURITY_ATTRIBUTES, bManualReset : bool, bInitialState : boo..

ssjune.tistory.com

[pywin32/win32event] - 3. [pywin32] WaitForSingleObject 함수

 

3. [pywin32] WaitForSingleObject 함수

int = WaitForSingleObject(hHandle, milliseconds ) 이벤트 하나를 등록시켜놓고 이벤트가 셋트 되면 이를 알려주는 함수입니다. 인자로는 hHandle : PyHANDLE, milliseconds : int 가 있습니다. hHandle: 대기상..

ssjune.tistory.com

[pywin32/win32event] - 4. [pywin32] OpenEvent 함수

 

4. [pywin32] OpenEvent 함수

PyHANDLE = OpenEvent(desiredAccess, bInheritHandle , name ) CreateEvent로 만들어진 이벤트를 여는 함수입니다. 인자로는 desiredAccess : int, bInheritHandle : bool, name : PyUnicode 가 있습니다. desire..

ssjune.tistory.com

[pywin32/win32event] - 5. [pywin32] SetEvent 함수

 

5. [pywin32] SetEvent 함수

SetEvent(hEvent) 이벤트를 셋트 시키는 함수입니다. 인자로는 hEvent : PyHANDLE 가 있습니다. hEvent: 셋트 시킬 이벤트의 핸들입니다. 보통 OpenEvent 함수의 리턴값을 사용하게 됩니다. import win32event imp..

ssjune.tistory.com

[pywin32/win32event] - 6. [pywin32] ResetEvent 함수

 

6. [pywin32] ResetEvent 함수

ResetEvent(hEvent) 이벤트를 리셋 시키는 함수입니다. 인자로는 hEvent : PyHANDLE 가 있습니다. hEvent: 리셋시킬 이벤트 핸들입니다. 보통 OpenEvent 함수의 리턴값을 사용합니다. 이 함수를 실험하기 전에 Wa

ssjune.tistory.com

[pywin32/win32event] - 7. [pywin32] PulseEvent 함수

 

7. [pywin32] PulseEvent 함수

PulseEvent(hEvent) 이벤트를 셋트로 설정 후 리셋 시키는 함수입니다. SetEvent 함수와 ResetEvent 함수를 순서대로 호출한다고 봐도 무방할 것 같습니다. 인자로는 hEvent : PyHANDLE 가 있습니다. hEvent: 셋트..

ssjune.tistory.com

[pywin32/win32event] - 8. [pywin32] CreateWaitableTimer 함수

 

8. [pywin32] CreateWaitableTimer 함수

PyHANDLE = CreateWaitableTimer(TimerAttributes, ManualReset , TimerName ) 대기 타이머를 생성하는 함수입니다. 인자로는 TimerAttributes : PySECURITY_ATTRIBUTES, ManualReset : bool, TimerName : str 가..

ssjune.tistory.com

[pywin32/win32event] - 9. [pywin32] OpenWaitableTimer 함수

 

9. [pywin32] OpenWaitableTimer 함수

PyHANDLE = OpenWaitableTimer(desiredAccess, bInheritHandle , timerName ) CreateWaitableTimer로 생성된 타이머를 오픈하는 함수입니다. 인자로는 desiredAccess : int, bInheritHandle : bool, timerName : s..

ssjune.tistory.com

[pywin32/win32event] - 10. [pywin32] CancelWaitableTimer 함수

 

10. [pywin32] CancelWaitableTimer 함수

CancelWaitableTimer(handle) 동작하는 타이머를 종료하는 함수입니다. 인자로는 handle이 있습니다. handle은 종료시킬 타이머의 핸들값입니다. import win32event import win32con import win32api evtHandle =..

ssjune.tistory.com

[pywin32/win32event] - 11. [pywin32] SetWaitableTimer 함수

 

11. [pywin32] SetWaitableTimer 함수

SetWaitableTimer(handle, dueTime, period, func, param, resume_state) 대기 타이머를 셋트 시키는 함수입니다. 인자로는 handle : PyHANDLE, dueTime : long, period : int, func : object, param : object, re..

ssjune.tistory.com

[pywin32/win32event] - 12. [pywin32] CreateMutex 함수

 

12. [pywin32] CreateMutex 함수

PyHANDLE = CreateMutex(MutexAttributes, InitialOwner , Name ) 인자로는 MutexAttributes : PySECURITY_ATTRIBUTES, InitialOwner : bool, Name : PyUnicode 가 있습니다. MutexAttributes는 뮤텍스에 대한 보..

ssjune.tistory.com

[pywin32/win32event] - 13. [pywin32] OpenMutex 함수

 

13. [pywin32] OpenMutex 함수

PyHANDLE = OpenMutex(desiredAccess, bInheritHandle , name ) 인자로는 desiredAccess : int, bInheritHandle : bool, name : PyUnicode 가 있습니다. desiredAccess는 뮤텍스에 대한 접근권한을 나타냅니다. -..

ssjune.tistory.com

[pywin32/win32event] - 14. [pywin32] ReleaseMutex 함수

 

14. [pywin32] ReleaseMutex 함수

ReleaseMutex(hEvent) CreateMutex나 OpenMutex로 만든 뮤텍스의 점유를 해제하는 함수입니다. 인자로는 hEvent : PyHANDLE 가 있습니다. hEvent는 뮤텍스의 핸들값입니다. import threading import win32event im..

ssjune.tistory.com

[pywin32/win32event] - 15. [pywin32] CreateSemaphore 함수

 

15. [pywin32] CreateSemaphore 함수

PyHANDLE = CreateSemaphore(SemaphoreAttributes, InitialCount , MaximumCount , SemaphoreName ) 인자로는 SemaphoreAttributes : PySECURITY_ATTRIBUTES, InitialCount : int, MaximumCount : int, SemaphoreN..

ssjune.tistory.com

[pywin32/win32event] - 16. [pywin32] OpenSemaphore 함수

 

16. [pywin32] OpenSemaphore 함수

PyHANDLE = OpenSemaphore(desiredAccess, bInheritHandle , name ) 만들어진 세마포어를 오픈하는 함수입니다. 인자로는 desiredAccess : int, bInheritHandle : bool, name : PyUnicode 가 있습니다. desiredAcc..

ssjune.tistory.com

[pywin32/win32event] - 17. [pywin32] ReleaseSemaphore 함수

 

17. [pywin32] ReleaseSemaphore 함수

int = ReleaseSemaphore(hEvent, lReleaseCount ) WaitForSingleObject로 점유한 세마포어의 점유를 해제하는 함수입니다. 인자로는 hEvent : PyHANDLE, lReleaseCount : int 가 있습니다. hEvent는 세마포어의 핸..

ssjune.tistory.com

[pywin32/win32event] - 18. [pywin32] WaitForMultipleObjects 함수

 

18. [pywin32] WaitForMultipleObjects 함수

int = WaitForMultipleObjects(handleList, bWaitAll , milliseconds ) WaitForSingleObjects가 하나의 이벤트 핸들에 대해서 대기를 한다면, 이 함수는 여러개의 이벤트 핸들에 대해서 대기를 할 수 있습니다. 인..

ssjune.tistory.com

[pywin32/win32event] - 19. [pywin32] WaitForSingleObjectEx 함수

 

19. [pywin32] WaitForSingleObjectEx 함수

int = WaitForSingleObjectEx(hHandle, milliseconds , bAlertable ) 기본적인 기능은 WaitForSingleObject와 같습니다. [pywin32/win32event] - 3. [pywin32] WaitForSingleObject 함수 3. [pywin32] WaitForSing..

ssjune.tistory.com

[pywin32/win32event] - 20. [pywin32] WaitForMultipleObjectsEx 함수

 

20. [pywin32] WaitForMultipleObjectsEx 함수

int = WaitForMultipleObjectsEx(handleList, bWaitAll , milliseconds , bAlertable ) 기본적인 기능은 WaitForMultipleObjects와 같습니다. [pywin32/win32event] - 18. [pywin32] WaitForMultipleObjects 함수..

ssjune.tistory.com

[pywin32/win32event] - 21. [pywin32] WaitForInputIdle 함수

 

21. [pywin32] WaitForInputIdle 함수

int = WaitForInputIdle(hProcess, milliseconds ) WaitForInputIdle은 특정 프로세스가 만들어지고 완전히 초기화가 될 때까지 대기하는 함수입니다. 인자로는 hProcess : PyHANDLE, milliseconds : int 가 있습..

ssjune.tistory.com

 

반응형

'pywin32 > win32event' 카테고리의 다른 글

6. [pywin32] ResetEvent 함수  (0) 2020.08.31
5. [pywin32] SetEvent 함수  (0) 2020.08.31
4. [pywin32] OpenEvent 함수  (0) 2020.08.31
3. [pywin32] WaitForSingleObject 함수  (0) 2020.08.31
2. [pywin32] CreateEvent 함수  (0) 2020.08.30

댓글()

3. [pywin32] CryptUnprotectData 함수

pywin32/win32crypt|2020. 8. 9. 23:29

(str, bytes) = CryptUnprotectData(DataIn, OptionalEntropy , Reserved , PromptStruct , Flags )

 

CryptUnprotectData로 암호화된 데이터를 복호화하는 함수입니다.

 

인자로는 DataIn : bytes, OptionalEntropy=None : bytes, Reserved=None : None, PromptStruct=None : PyCRYPTPROTECT_PROMPTSTRUCT, Flags=0 : int가 있습니다.

 

DataIn은 CryptProtectData 함수로 암호화 데이터입니다.

 

OptionalEntropy는 데이터 암호화를 더 복잡하게 만든 값으로 CryptProtectData와 같은 값으로 하셔야 합니다.

 

Reserved는 지금은 쓰지 않지만 언제가 사용할 때를 대비한 인자로써 반드시 none이어야 합니다.

 

PromptStruct는 UI를 위한 옵션으로 PyCRPYTPROTECT_PROMPTSTRUCT 구조체를 사용합니다.

* PyCRPYTPROTECT_PROMPTSTRUCT 은 3개의 자료를 갖는 튜플형 변수입니다.

[0] int : flags

 - CRYPTPROTECT_PROMPT_PROTECT = 0x1

 - CRYPTPROTECT_PROMPT_UNPROTECT = 0x2

 - 위 2개의 인자값의 컴비네이션을 플래그로 갖습니다. 근데 제가 아무리 써봐도 무슨 차이가 있는지 모르겠습니다;;

 

[1] int : hwndApp

 - 부모 프로세스의 핸들로 0으로 두시면 됩니다.

 

[2] PyUnicode : prompt

  - UI 프롬프트 창의 이름입니다. None으로 두셔도 상관없습니다.

 

Flags는 암호화 옵션입니다.

 

Flags 설명
CRYPTPROTECT_UI_FORBIDDEN = 0x1 PromptStruct를 통해 UI 창을 호출할 수 있었는데 이 Flag가 활성화되있으면, PromptStruct 설정 시 에러가 발생합니다.(UI 금지)
CRYPTPROTECT_VERIFY_PROTECTION = 0x40 복호화시 보호 레벨이 암호화시의 보호 레벨보다 낮으면 재암호화를 요구한다고 합니다. 아마 제 생각에는 윈도우 버전별로 암복호화 알고리즘이 다른데 그 때 사용하는 게 아닌가 합니다.

CryptProtectData 함수와 Flags 가 차이가 나는데, CRYPTPROTECT_LOCAL_MACHINE, CRYPTPROTECT_AUDIT 같은 경우 CryptProtectData 함수 사용 시 설정되어 있었으면 CryptUnprotectData 함수 시 자동으로 설정되기 때문입니다.

 

import win32crypt

promptStruct = (0x1, 0, "hello")

eData = b'\x01\x00\x00\x00\xd0\x8c\x9d\xdf\x01\x15\xd1\x11\x8cz\x00\xc0O\xc2\x97\
\xeb\x01\x00\x00\x00\x01\x90\x01\xe7\xb1\x06+G\xb5\xe9\xba`l|\xe1}\x13\x00\x00\x00\
\x18\x00\x00\x00d\x00e\x00s\x00c\x00r\x00i\x00p\x00t\x00i\x00o\x00n\x00\x00\x00\x10f\
\x00\x00\x00\x01\x00\x00 \x00\x00\x00\x07\xceeu\nZ\xe8\xc3e\x1eW\x10\x7f\xa14\x8c\xcc\
\x87G\x05UM\xbb=\xcal\xb7\xb2\x17\t\x14S\x00\x00\x00\x00\x0e\x80\x00\x00\x00\x02\x00\
\x00 \x00\x00\x00\xdav\xd2\xa4\xea\xae\xb6\xa6\xd9\xaf\x91Rbi\xf7q\x91\xb3\xa3\x9d\xeeS\
\x99!\xac8\xbeoHw\xfa_\x10\x00\x00\x008)7I\xfb\x96\xbb\xf6\x94\xdcJQ\x90\xaf\x15\x9b@\
\x00\x00\x00\xdc\xebbD\x80\x0b\x95\xc3\x13\xd1\xa8\x8d\x0fL~\x17\xf9\xbf\xc5dd\x94@g\
\x83>\x82\x13`\xc6i\xac\xb7\xcf\xfc\xc0\x19=)\xab\xf6P\xaf\x83\x184#g\xe8\x8d\x93\x89\
\xd1B\xc6\x02\x9b\x9f.@b\xfc\xd7\x8d'
#CryptProtectData 시 암호화된 데이터

dData = win32crypt.CryptUnprotectData(eData, None, None, promptStruct, 0)
print(f"{dData}")

위 코드를 실행한 결과

 

CryptProtectData 함수 사용 시의 DataDescr와 DataIn 이 복호화되었습니다~

 

그리고 CryptProtectData 함수 사용 시 설정한 CRYPTPROTECT_AUDIT 플래그 때문에 복호화 시에도 이벤트 로그가 생겼습니다~

반응형

'pywin32 > win32crypt' 카테고리의 다른 글

2. [pywin32] CryptProtectData 함수  (0) 2020.08.09
1. [pywin32] win32crypt 소개  (0) 2020.08.09

댓글()

2. [pywin32] CryptProtectData 함수

pywin32/win32crypt|2020. 8. 9. 23:28

bytes = CryptProtectData(DataIn, DataDescr , OptionalEntropy , Reserved , PromptStruct , Flags )

 

데이터를 암호화 해주는 함수입니다. 암호화 과정 중 사용자의 정보를 이용하기 때문에 다른 사용자가 복호화를 하지 못합니다.

 

인자로는 DataIn : bytes, DataDescr=None : PyUnicode,OptionalEntropy=None : bytes, Reserved=None : None, PromptStruct=None : PyCRYPTPROTECT_PROMPTSTRUCT, Flags=0 : int 가 있습니다.

 

DataIn은 암호화 대상 데이터입니다.

 

DataDescr는 데이터에 대한 설명으로 DataIn에 합쳐져서 암호화가 됩니다. 기본값은 None입니다.

 

OptionalEntropy는 데이터 암호화를 더 복잡하게 만드는 값으로 패스워드로 보셔도 됩니다. 기본값은 None입니다.

 

Reserved는 지금은 쓰지 않지만 언제가 사용할 때를 대비한 인자로써 반드시 None이여야 합니다.

 

PromptStruct는 UI를 위한 옵션으로 PyCRPYTPROTECT_PROMPTSTRUCT 구조체를 사용합니다.

* PyCRPYTPROTECT_PROMPTSTRUCT 은 3개의 자료를 갖는 튜플형 변수입니다.

[0] int : flags

 - CRYPTPROTECT_PROMPT_PROTECT = 0x1

 - CRYPTPROTECT_PROMPT_UNPROTECT = 0x2

 - 위 2개의 인자값의 컴비네이션을 플래그로 갖습니다. 근데 제가 아무리 써봐도 무슨 차이가 있는지 모르겠습니다;;

 

[1] int : hwndApp

 - 부모 프로세스의 핸들로 0으로 두시면 됩니다.

 

[2] PyUnicode : prompt

  - UI 프롬프트 창의 이름입니다. None으로 두셔도 상관없습니다.

 

Flags는 암호화 옵션입니다.

Flags 설명
CRYPTPROTECT_LOCAL_MACHINE = 0x4 위에서 CryptProtectData는 사용자의 정보로 암호화를 하기 때문에 다른 사용자가 복호화를 하지 못한다고 했습니다. 이 Flag를 적용하면, 사용자의 정보가 아니라 컴퓨터의 정보를 이용하기 때문에 다른 사용자로 로그인해도 복호화가 가능합니다.
CRYPTPROTECT_UI_FORBIDDEN = 0x1 PromptStruct를 통해 UI 창을 호출할 수 있었는데 이 Flag가 활성화되있으면, PromptStruct 설정 시 에러가 발생합니다.(UI 금지)
CRYPTPROTECT_AUDIT = 0x10 암복호화 시 감사 로그를 발생시키게 합니다. 근데 이건 감사로그 정책 설정이 필요합니다. 밑에서 설명하겠습니다.

* 암복호화시 감사 로그를 남기기 위한 설정입니다.

저 같은 경우에는 gpedit.msc를 통해서 설정했습니다.

위 이미지의 경로에서 DPAPI 작업 감사를 성공 및 실패로 변경하면 됩니다.

 

import win32crypt

promptStruct = (0x1, 0, "hello")

eData = win32crypt.CryptProtectData(b"text", "description", None, None, promptStruct, 0x10)
# 감사 로그 남김
print(f"{eData}")

위의 프롬프트 창이 뜨고

 

암호화 결과가 출력됩니다.

 

이벤트 로그의 보안 로그를 보면 감사 로그도 남겨져 있습니다.

반응형

'pywin32 > win32crypt' 카테고리의 다른 글

3. [pywin32] CryptUnprotectData 함수  (0) 2020.08.09
1. [pywin32] win32crypt 소개  (0) 2020.08.09

댓글()

1. [pywin32] win32crypt 소개

pywin32/win32crypt|2020. 8. 9. 23:28

암호화 관련 win32api에 대해서 설명합니다.

 

다음의 2가지 함수를 제공합니다.

 

  1. CryptProtectData
  2. CryptUnprotectData

 

[pywin32/win32crypt] - 2. [pywin32] CryptProtectData 함수

 

2. [pywin32] CryptProtectData 함수

bytes = CryptProtectData(DataIn, DataDescr , OptionalEntropy , Reserved , PromptStruct , Flags ) 데이터를 암호화 해주는 함수입니다. 암호화 과정 중 사용자의 정보를 이용하기 때문에 다른 사용자가 복호..

ssjune.tistory.com

[pywin32/win32crypt] - 3. [pywin32] CryptUnprotectData 함수

 

3. [pywin32] CryptUnprotectData 함수

(str, bytes) = CryptUnprotectData(DataIn, OptionalEntropy , Reserved , PromptStruct , Flags ) CryptUnprotectData로 암호화된 데이터를 복호화하는 함수입니다. 인자로는 DataIn : bytes, OptionalEntropy=N..

ssjune.tistory.com

 

반응형

'pywin32 > win32crypt' 카테고리의 다른 글

3. [pywin32] CryptUnprotectData 함수  (0) 2020.08.09
2. [pywin32] CryptProtectData 함수  (0) 2020.08.09

댓글()

2. [pywin32] 함수 설명 및 예제 정리

http://timgolden.me.uk/pywin32-docs/contents.html

 

pywin32의 함수에 대한 설명이 잘 되어 있는 사이트 같습니다.

 

* 18/09/07 제가 설치한 224버전에 대해서 모든 함수가 설명되어 있지는 않은 것 같습니다. 일단 사이트에 있는 함수만 설명하고 추후 업데이트 하려고 합니다.

 

저는 이 사이트에 나온 모듈 중심으로 설명할 것이며 간단한 예제를 선보이는 방향으로 진행하려 합니다. (모든 모듈과 함수를 설명하진 않고 많이 쓰일 것 같은 것 위주로 하겠습니다.ㅎㅎ)

 

밑의 목록은 pywin32의 모듈과 함수들이며 이 블로그에 하나씩 채울때마다 링크를 걸어두려 합니다.

* win32con 모듈의 경우 사이트에서 설명이 없어서 제가 임의로 추가하였습니다

 

목록

 

 

 

반응형

'pywin32 > pywin32 설치 및 사용법' 카테고리의 다른 글

1. [pywin32] 설치  (1) 2018.11.04

댓글()

13. [pywin32] NotifyChangeEventLog() 함수

pywin32/win32evtlog|2020. 7. 25. 23:24

NotifyChangeEventLog(handle, handle)

 

이벤트 로그가 쓰여지면 알려주는 함수입니다.

 

인자로는 handle : int, handle : int 가 있습니다.

 

handle 은 OpenEventLog 함수의 리턴값으로 감시할 이벤트 로그의 핸들값입니다.

 

2번째 handle은 win32 event 핸들값으로 이벤트 로그에 로그가 쓰여지면 이 handle이 가리키는 이벤트 핸들에서 알람을 감지할 수 있습니다.

import win32evtlog
import win32event
import win32api
import win32con

pHandle = win32evtlog.OpenEventLog(None, "Application")
# Application 로그 오픈
cHandle = win32event.CreateEvent(None, win32con.TRUE, win32con.FALSE, None)
# 새로운 이벤트를 생성
win32evtlog.NotifyChangeEventLog(pHandle, cHandle)

while True:
    x = win32event.WaitForSingleObject(cHandle, win32event.INFINITE) # 대기
    if x == win32event.WAIT_OBJECT_0:	# 로그가 쓰여지는 걸 감지
        print(f"signaled!")
        break


win32api.CloseHandle(cHandle)
win32evtlog.CloseEventLog(pHandle)
# 핸들 값 반환

위 코드를 실행하면 무한 대기할 것입니다.

 

다른 파이썬 쉘을 키고, ReportEvent 함수를 실행해봅시다. (ReportEvent 코드 참조)

 

이벤트 로그가 쓰여졌으니 이를 감지하고 signaled!를 출력하였습니다.

win32event.WaitForSingleObject 에 대해서는 win32event에서 설명하겠습니다~

 

[pywin32/win32event] - 3. [pywin32] WaitForSingleObject 함수

 

3. [pywin32] WaitForSingleObject 함수

int = WaitForSingleObject(hHandle, milliseconds ) 이벤트 하나를 등록시켜놓고 이벤트가 셋트 되면 이를 알려주는 함수입니다. 인자로는 hHandle : PyHANDLE, milliseconds : int 가 있습니다. hHandle: 대기상..

ssjune.tistory.com

 

반응형

댓글()

12. [pywin32] OpenBackupEventLog() 함수

pywin32/win32evtlog|2020. 7. 25. 13:58

PyEVTLOG_HANDLE = OpenBackupEventLog(serverName, fileName )

 

OpenEventLog 함수와 비슷합니다. 차이가 있다면, 이 함수는 기존에 백업된 이벤트 로그 파일에 대한 핸들값을 리턴합니다.

 

인자는 serverName : PyUnicode, fileName : PyUnicode 가 있습니다.

 

serverName은 이벤트 로그가 있는 원격 서버의 이름입니다. None으로 설정 시 로컬 컴퓨터를 뜻합니다.

 

fileName은 백업된 이벤트 로그 파일의 상대경로 혹은 절대경로입니다.

 

OpenBackupEventLog 함수의 리턴값은 PyEVTLOG_HANDLE 형식이며, 이벤트 로그를 다룰 떄 사용합니다.

그러나 OpenEventLog 함수와는 달리 몇몇 이벤트 로그 함수만 사용할 수 있으며, BackupEventLog 함수로 다시 백업하거나 ReadEventLog 함수로 백업된 로그 내용을 읽어오는 정도만이 가능한 것 같습니다.

import win32evtlog

pHandle = win32evtlog.OpenBackupEventLog(None, "C:\\test\BackupEventTestFile.evtx")

# win32evtlog.ClearEventLog(pHandle, "C:\\test\BackupEventTestFile2.evtx")
# 안됨

# win32evtlog.ClearEventLog(pHandle, None)
# 안됨

# win32evtlog.BackupEventLog(pHandle, "BackupEventTestFile2.evtx")
# 됨

'''
flag = win32evtlog.EVENTLOG_SEQUENTIAL_READ | win32evtlog.EVENTLOG_BACKWARDS_READ

num = win32evtlog.GetNumberOfEventLogRecords(pHandle)
print(f"{num}")

for i in range(num):
    x = win32evtlog.ReadEventLog(pHandle, flag, 0)

    for j in x:
        print(f"{j.TimeGenerated}")
'''
# 됨
        
win32evtlog.CloseEventLog(pHandle)

주석을 해제하면서 실행해보시면, 결과를 아실 수 있습니다.ㅎㅎ

반응형

댓글()

11. [pywin32] ClearEventLog() 함수

pywin32/win32evtlog|2020. 7. 25. 13:47

ClearEventLog(handle, eventLogName)

 

이벤트 로그의 내용을 모두 지우는 함수입니다. 지울때 백업을 할 지 정할 수 있습니다.

 

인자로는 handle : int, eventLogName : PyUnicode 가 있습니다.

 

handle은 클리어할 이벤트 로그의 핸들로 OpenEventLog 함수의 리턴값입니다.

 

eventLogName은 이벤트 로그를 지우기전에 백업할 경우 작성하는 곳입니다.

BackupEventLog 함수의 eventLogName 인자와 사용법이 같습니다.(BackupEventLog 함수 참조)

만약, 백업을 하지 않겠다면 None으로 설정하시면 됩니다.

import win32evtlog

pHandle = win32evtlog.OpenEventLog(None, "Application")

win32evtlog.ClearEventLog(pHandle, "C:\\test\BackupEventTestFile.evtx")
# 백업하고 clear

win32evtlog.ClearEventLog(pHandle, None)
# 그냥 clear

win32evtlog.CloseEventLog(pHandle)

위 코드의 실행 결과 test폴더에 백업 파일이 생기고 이벤트로그가 다 지워졌습니다.

반응형

댓글()

10. [pywin32] BackupEventLog() 함수

pywin32/win32evtlog|2020. 7. 25. 13:38

BackupEventLog(handle, eventLogName)

 

이벤트 로그를 백업하는 함수입니다.

 

인자로는 handle : int, eventLogName : PyUnicode가 있습니다.

 

handle은 백업할 이벤트 로그의 핸들값으로 OpenEventLog 함수의 리턴값입니다.

 

eventLogName은 이벤트 로그를 어디에 무슨 이름으로 백업할지 정합니다.

상대경로와 절대경로를 사용할 수 있습니다.

 

import win32evtlog

pHandle = win32evtlog.OpenEventLog(None, "Application")

win32evtlog.BackupEventLog(pHandle, "BackupEventTestFile.evtx")
win32evtlog.BackupEventLog(pHandle, "C:\\test\BackupEventTestFile.evtx")

win32evtlog.CloseEventLog(pHandle)

위 코드의 실행 결과 위코드를 실행시킨 폴더와 C드라이브의 test 폴더내에 백업파일이 생겼을 겁니다.(test폴더는 사전에 미리 만들어야 합니다.)

반응형

댓글()

9. [pywin32] ReadEventLog() 함수

pywin32/win32evtlog|2020. 7. 25. 00:25

[object,...] = ReadEventLog(Handle, Flags , Offset , Size )

 

OpenEventLog로 열었던 이벤트 로그의 내용을 읽어오는 함수입니다.

 

인자로는 Handle : PyHANDLE, Flags : int, Offset : int, Size=4096 : int가 있습니다.

 

Handle 은 OpenEventLog의 리턴값인 PyEVTLOG_HANDLE 값이 들어갈 수 있습니다

PyEVTLOG_HANDLE이 PyHANDLE을 상속했기 때문에 가능합니다.

 

Flags는 로그를 어떤식으로 읽을지 정하는 값입니다.

의미
win32evtlog.EVENTLOG_SEEK_READ 로그를 Offset 부터 읽는다.
* 현재 이 값은 오류로 인해 잘 되지 않는 듯 합니다.
support.microsoft.com/ko-kr/help/177199/bug-readeventlog-fails-with-error-87
win32evtlog.EVENTLOG_SEQUENTIAL_READ 로그를 순서대로 읽는다.
의미
win32evtlog.EVENTLOG_FORWARDS_READ 로그를 옛날 거부터 읽는다.(old to new)
win32evtlog.EVENTLOG_BACKWARDS_READ 로그를 최신 거 부터 읽는다.(new to old)

Flag 값은 위의 값을 조합해서 설정하니다.

 

Offset은 win32evtlog.EVENTLOG_SEEK_READ이 설정될 때 의미있는 값입니다. 로그를 Offset부터 읽습니다.

 

Size=4096은 리턴값의 사이즈인데, 4096의 기본값을 사용하면 될 듯 합니다.

 

ReadEventLog 함수의 리턴값은 PyEventLogRecord Object를 갖는 리스트 형식인 듯 합니다.

PyEventLogRecord 의 속성 : timgolden.me.uk/pywin32-docs/PyEventLogRecord.html

import win32evtlog

pHandle = win32evtlog.OpenEventLog(None, "Application")
# Application 로그를 오픈

flag = win32evtlog.EVENTLOG_SE | win32evtlog.EVENTLOG_BACKWARDS_READ

num = win32evtlog.GetNumberOfEventLogRecords(pHandle)
# Application 로그의 현재 갯수 출력
print(f"{num}")

for i in range(num): # 로그의 현재 갯수 만큼 호출
    x = win32evtlog.ReadEventLog(pHandle, flag, 0)
    # 로그 Read    

    for j in x:
        print(f"{j.TimeGenerated}")
        # 편의상 시간 정보만 출

win32evtlog.CloseEventLog(pHandle)
# 로그 핸들 반환

예제를 실행한 결과로 227개의 로그를 최신거 부터 순서대로 시간 정보만을 출력한 결과입니다.

반응형

댓글()

8. [pywin32] GetOldestEventLogRecord() 함수

pywin32/win32evtlog|2020. 7. 24. 23:53

int = GetOldestEventLogRecord(handle)

 

OpenEventLog 함수로 열었던 이벤트 로그에 지금까지 몇개의 로그가 쌓였는지 알려주는 함수입니다.

 

GetNumberOfEventLogRecords 함수가 현재의 로그 갯수를 알려준다면, GetOldestEventLogRecord 함수는 지금까지 쌓인 총 로그 갯수를 알려줍니다.

 

인자로는 handle : int 가 있습니다.

 

handle은 OpenEventLog 함수의 리턴값인 PyEVTLOG_HANDLE 값이 들어갈 수 있습니다.

 

import win32evtlog

pHandle = win32evtlog.OpenEventLog(None, "Application")
# Application 로그를 오픈
num = win32evtlog.GetOldestEventLogRecord(pHandle)
print(f"{num}")
# Application 로그의 총 갯수 출력
win32evtlog.CloseEventLog(pHandle)
# 로그 핸들 반환

실행 결과 Application 로그가 지금까지 209885 개 쌓였다고 하는군요ㅎㅎ

이것도 GetNumberOfEventLogRecords 처럼 이벤트 뷰어에서 확인해보고 싶지만 알 수가 없네요.

실행 결과를 믿어야겠습니다.ㅎㅎ

반응형

댓글()

7. [pywin32] GetNumberOfEventLogRecords() 함수

pywin32/win32evtlog|2020. 7. 24. 23:47

int = GetNumberOfEventLogRecords(handle)

 

OpenEventLog 함수로 열었던 이벤트 로그에 몇개의 로그가 쌓였는지 알려주는 함수입니다.

 

인자로는 handle : int 가 있습니다.

 

handle은 OpenEventLog 함수의 리턴값인 PyEVTLOG_HANDLE 값이 들어갈 수 있습니다.

 

 

import win32evtlog

pHandle = win32evtlog.OpenEventLog(None, "Application")
# Application 로그를 오픈
num = win32evtlog.GetNumberOfEventLogRecords(pHandle)
print(f"{num}")
# Application 로그 갯수 출력
win32evtlog.CloseEventLog(pHandle)
# 로그 핸들 반환

실행 결과 저는 227개의 로그가 있다고 합니다.

실제 이벤트 뷰어를 확인해보겠습니다.

여기서도 227개가 있다고 하는군요ㅎㅎ

반응형

댓글()

6. [pywin32] CloseEventLog() 함수

pywin32/win32evtlog|2020. 7. 24. 23:35

CloseEventLog(handle)

 

OpenEventLog 함수로 열었던 이벤트 로그 핸들값을 반환하는 함수입니다.

 

인자로는 handle : int 가 있습니다.

 

handle은 OpenEventLog 함수의 리턴값인 PyEVTLOG_HANDLE 값이 들어갈 수 있습니다.

 

 

import win32evtlog
pHandle = win32evtlog.OpenEventLog(None, "Application")

win32evtlog.CloseEventLog(pHandle)

기존에 있던 Applicaton 로그를 열었다가 닫아주는 예제입니다.

반응형

댓글()

5. [pywin32] OpenEventLog() 함수

pywin32/win32evtlog|2020. 7. 24. 23:30

PyEVTLOG_HANDLE = OpenEventLog(serverName, sourceName )

 

OpenEventLog 함수는 이벤트 로그에 대한 핸들값을 획득하는 함수입니다.

 

인자로는 serverName : PyUnicode, sourceName : PyUnicode 가 있습니다.

 

PyEVTLOG_HANDLE은 이벤트 로그에 대한 핸들값을 위한 형식입니다.

 

serverName은 이벤트 로그가 있는 원격 서버의 이름입니다. None으로 설정 시 로컬 컴퓨터를 뜻합니다.

 

sourceName은 이벤트 로그의 이름입니다. 이벤트 로그에서 원본 이라고 표기되는 항목입니다.

sourceName은 반드시 다음의 레지스트리 경로에 사전 등록이 되있어야 합니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourceName(있어야 함)

 

OpenEventLog 함수의 리턴값은 PyEVTLOG_HANDLE 값이며, 이는 추후 로그를 다룰 때 사용합니다.

 

 

import win32evtlog
pHandle = win32evtlog.OpenEventLog(None, "Application")

win32evtlog.CloseEventLog(pHandle)

 

기존에 있던 Applicaton 로그를 열었다가 닫아주는 예제입니다.

 

CloseEventLog에 대해서는 다음장에서 설명하겠습니다.

반응형

댓글()

4. [pywin32] ReportEvent() 함수

pywin32/win32evtlog|2020. 7. 19. 19:44

ReportEvent(EventLog, Type, Category, EventID, UserSid, Strings, RawData)

 

ReportEvent 함수는 실제로 이벤트 로그를 만드는 함수입니다.

 

인자로는 EventLog : PyHANDLE, Type : int, Category : int, EventID : int, rUserSid : PySID, Strings : sequence, RawData : str 가 있습니다.

 

PyHANDLE 은 pywin32에서 정의한 타입으로 핸들값을 위한 형식입니다.

 

PySID 는 pywin32에서 정의한 타입으로 SID를 위한 형식입니다.

 

EventLog는 이벤트 로그에 대한 핸들 값으로 RegisterEventSource 함수의 리턴값인 핸들 값을 넣어주면 됩니다.

 

Type은 로그 타입으로 win32con.EVENTLOG_* 값 중 6가지를 사용합니다.

 * win32con에 대한 설명은 win32con 페이지 참조

 

의미
win32con.EVENTLOG_AUDIT_SUCCESS 감사 성공 이벤트
win32con.EVENTLOG_AUDIT_FAILURE 감사 실패 이벤트
win32con.EVENTLOG_ERROR_TYPE 오류 수준 이벤트
win32con.EVENTLOG_INFORMATION_TYPE 정보 수준 이벤트
win32con.EVENTLOG_SUCCESS 성공 이벤트
win32con.EVENTLOG_WARNING_TYPE 경고 수준 이벤트

Category는 이벤트 로그를 어느 카테고리에 포함 시킬지 정하는 값인데 이건 이벤트 로그에 대응되는 message text file에서 정의해야 합니다. 이것에 대해서는 추후 설명하겠습니다. 일단 여기서는 1로 하겠습니다.

 

EventID는 이벤트 로그의 이벤트 ID를 설정하는 값인데 이것도 message text fil과 관계가 있습니다. 일단 여기서는 1로 하겠습니다.

 

UserSid는 사용자의 SID를 설정하는 값인데, win32api를 이용해서 SID를 추출할 수 있습니다. 이것도 추후 설명하겠습니다. 일단 여기서는 None으로 하겠습니다.

 

Strings 는 이벤트 로그의 이벤트 데이터에 포함시킬 값입니다.

 

RawData 는 이벤트 로그의 이벤트 데이터에 포함시킬 바이너리 값입니다.

 

 

import win32evtlog
import win32con


evHandle = win32evtlog.RegisterEventSource(None, "Application")
# 로그 이벤트 소스 등록
# 레지스트리에 있어야함

win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_AUDIT_SUCCESS,
                        1, 1, None, "test", b"rawdata")

win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_AUDIT_FAILURE,
                        1, 1, None, "test", b"rawdata")

win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_ERROR_TYPE,
                        1, 1, None, "test", b"rawdata")

win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_INFORMATION_TYPE,
                        1, 1, None, "test", b"rawdata")

win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_SUCCESS,
                        1, 1, None, "test", b"rawdata")

win32evtlog.ReportEvent(evHandle, win32con.EVENTLOG_WARNING_TYPE,
                        1, 1, None, "test", b"rawdata")

# 이벤트 로그 추가

win32evtlog.DeregisterEventSource(evHandle)
# 등록한 이벤트 소스 해제

앞에서 설명한 RegisterEventSource 함수와 DeregisterEventSource 함수 사이에 추가하였습니다.

그 결과를 이벤트 뷰어의 응용 프로그램 로그에서 확인할 수 있습니다.

반응형

댓글()

3. [pywin32] DeregisterEventSource() 함수

pywin32/win32evtlog|2020. 7. 19. 18:20

DeregisterEventSource(handle)

 

 

RegisterEventSource 함수로 등록한 이벤트 소스를 해제하는 함수입니다.

 

인자로는 handle:int가 있으며, RegisterEventSource 함수에서의 리턴값이 들어가게 됩니다.

(RegisterEventSource 함수에 대해서는 RegisterEventSource 함수 설명 참조)

 

import win32evtlog 

evHandle = win32evtlog.RegisterEventSource(None, "Application")
# 로그 이벤트 소스 등록
# 레지스트리에 있어야함

win32evtlog.DeregisterEventSource(evHandle)
# 등록한 이벤트 소스 해제

위 코드의 실행 결과는 아무것도 띄우지 않지만 에러가 나오지 않았다면 제대로 등록이 되고 해제되었을 겁니다.

반응형

'pywin32 > win32evtlog' 카테고리의 다른 글

6. [pywin32] CloseEventLog() 함수  (0) 2020.07.24
5. [pywin32] OpenEventLog() 함수  (2) 2020.07.24
4. [pywin32] ReportEvent() 함수  (0) 2020.07.19
2. [pywin32] RegisterEventSource() 함수  (0) 2020.07.19
1. [pywin32] win32evtlog 소개  (0) 2020.07.19

댓글()

2. [pywin32] RegisterEventSource() 함수

pywin32/win32evtlog|2020. 7. 19. 18:14

int = RegisterEventSource(serverName, sourceName )

 

이벤트 로그를 어떤 이름으로 남길 것인지 등록하는 함수입니다.

 

인자로는 serverName:PyUnicode 와 sourceName:PyUnicode 이 있습니다.

 

PyUnicode는 pywin32에서 정의한 타입으로 string과 같다고 생각하시면 됩니다.

 

serverName은 로그를 남길 원격 서버명입니다. None으로 하시면 현재 작업하는 로컬 컴퓨터에 이벤트 로그가 쌓입니다.

 

sourceName은 로그를 어떤 이름으로 남길 지 정하는 것으로 event source, 이벤트 로그에서 원본 이라고 표기되는 항목입니다.

sourceName은 반드시 다음의 레지스트리 경로에 사전 등록이 되있어야 합니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\sourceName(있어야 함)

 

RegisterEventSource() 함수의 리턴값은 int 형식의 handle 값이며, 이는 추후 등록된 이벤트 소스를 해제할 때 사용합니다.

 

자신만의 이벤트 소스 명을 만들 수 있지만 이번에는 기존에 있는 걸로 해보겠습니다.

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog\Application\Application 의 이름으로 이벤트 소스를 등록해보겠습니다.

 

import win32evtlog

evHandle = win32evtlog.RegisterEventSource(None, "Application")
# 로그 이벤트 소스 등록
# 레지스트리에 있어야함
"""
HKEY_LOCAL_MACHINE
   SYSTEM
      CurrentControlSet
         Services
            EventLog
               Application
                  AppName(여기에 있어야 함)
"""

win32evtlog.DeregisterEventSource(evHandle)
# 등록한 이벤트 소스 해제

위 코드의 실행 결과는 아무것도 띄우지 않지만 에러가 나오지 않았다면 제대로 등록이 되고 해제되었을 겁니다.

 

DeregisterEventSource() 함수에 대해서는 다음에 설명하겠습니다ㅎㅎ

반응형

댓글()

1. [pywin32] win32evtlog 소개

pywin32/win32evtlog|2020. 7. 19. 17:58

win32evtlog는 windows의 이벤트 로그와 관련된 api를 다루는 모듈입니다.

 

윈도우 비스타 이후 버전에서 사용할 수 있으며, xp에서 사용하려면 에러가 날 거라고 합니다.

 

저희는 windows 7이기 때문에 문제없이 동작할 거 같습니다.ㅎㅎ

 

다음의 12개 함수를 제공합니다.

 

  1. RegisterEventSource
  2. DeregisterEventSource
  3. ReportEvent
  4. OpenEventLog
  5. CloseEventLog
  6. GetNumberOfEventLogRecords
  7. GetOldestEventLogRecord
  8. ReadEventLog
  9. BackupEventLog
  10. ClearEventLog
  11. OpenBackupEventLog
  12. NotifyChangeEventLog

 

[pywin32/win32evtlog] - 2. [pywin32] RegisterEventSource() 함수

 

2. [pywin32] RegisterEventSource() 함수

int = RegisterEventSource(serverName, sourceName ) 이벤트 로그를 어떤 이름으로 남길 것인지 등록하는 함수입니다. 인자로는 serverName:PyUnicode 와 sourceName:PyUnicode 이 있습니다. PyUnicode는 pywin32..

ssjune.tistory.com

[pywin32/win32evtlog] - 3. [pywin32] DeregisterEventSource() 함수

 

3. [pywin32] DeregisterEventSource() 함수

DeregisterEventSource(handle) RegisterEventSource 함수로 등록한 이벤트 소스를 해제하는 함수입니다. 인자로는 handle:int가 있으며, RegisterEventSource 함수에서의 리턴값이 들어가게 됩니다. (RegisterEve..

ssjune.tistory.com

[pywin32/win32evtlog] - 4. [pywin32] ReportEvent() 함수

 

4. [pywin32] ReportEvent() 함수

ReportEvent(EventLog, Type, Category, EventID, UserSid, Strings, RawData) ReportEvent 함수는 실제로 이벤트 로그를 만드는 함수입니다. 인자로는 EventLog : PyHANDLE, Type : int, Category : int, EventID..

ssjune.tistory.com

[pywin32/win32evtlog] - 5. [pywin32] OpenEventLog() 함수

 

5. [pywin32] OpenEventLog() 함수

PyEVTLOG_HANDLE = OpenEventLog(serverName, sourceName ) OpenEventLog 함수는 이벤트 로그에 대한 핸들값을 획득하는 함수입니다. 인자로는 serverName : PyUnicode, sourceName : PyUnicode 가 있습니다. PyEV..

ssjune.tistory.com

[pywin32/win32evtlog] - 6. [pywin32] CloseEventLog() 함수

 

6. [pywin32] CloseEventLog() 함수

CloseEventLog(handle) OpenEventLog 함수로 열었던 이벤트 로그 핸들값을 반환하는 함수입니다. 인자로는 handle : int 가 있습니다. handle은 OpenEventLog 함수의 리턴값인 PyEVTLOG_HANDLE 값이 들어갈 수 있..

ssjune.tistory.com

[pywin32/win32evtlog] - 7. [pywin32] GetNumberOfEventLogRecords() 함수

 

7. [pywin32] GetNumberOfEventLogRecords() 함수

int = GetNumberOfEventLogRecords(handle) OpenEventLog 함수로 열었던 이벤트 로그에 몇개의 로그가 쌓였는지 알려주는 함수입니다. 인자로는 handle : int 가 있습니다. handle은 OpenEventLog 함수의 리턴값인..

ssjune.tistory.com

[pywin32/win32evtlog] - 8. [pywin32] GetOldestEventLogRecord() 함수

 

8. [pywin32] GetOldestEventLogRecord() 함수

int = GetOldestEventLogRecord(handle) OpenEventLog 함수로 열었던 이벤트 로그에 지금까지 몇개의 로그가 쌓였는지 알려주는 함수입니다. GetNumberOfEventLogRecords 함수가 현재의 로그 갯수를 알려준다면, G..

ssjune.tistory.com

[pywin32/win32evtlog] - 9. [pywin32] ReadEventLog() 함수

 

9. [pywin32] ReadEventLog() 함수

[object,...] = ReadEventLog(Handle, Flags , Offset , Size ) OpenEventLog로 열었던 이벤트 로그의 내용을 읽어오는 함수입니다. 인자로는 Handle : PyHANDLE, Flags : int, Offset : int, Size=4096 : int가..

ssjune.tistory.com

[pywin32/win32evtlog] - 10. [pywin32] BackupEventLog() 함수

 

10. [pywin32] BackupEventLog() 함수

BackupEventLog(handle, eventLogName) 이벤트 로그를 백업하는 함수입니다. 인자로는 handle : int, eventLogName : PyUnicode가 있습니다. handle은 백업할 이벤트 로그의 핸들값으로 OpenEventLog 함수의 리턴..

ssjune.tistory.com

[pywin32/win32evtlog] - 11. [pywin32] ClearEventLog() 함수

 

11. [pywin32] ClearEventLog() 함수

ClearEventLog(handle, eventLogName) 이벤트 로그의 내용을 모두 지우는 함수입니다. 지울때 백업을 할 지 정할 수 있습니다. 인자로는 handle : int, eventLogName : PyUnicode 가 있습니다. handle은 클리어할..

ssjune.tistory.com

[pywin32/win32evtlog] - 12. [pywin32] OpenBackupEventLog() 함수

 

12. [pywin32] OpenBackupEventLog() 함수

PyEVTLOG_HANDLE = OpenBackupEventLog(serverName, fileName ) OpenEventLog 함수와 비슷합니다. 차이가 있다면, 이 함수는 기존에 백업된 이벤트 로그 파일에 대한 핸들값을 리턴합니다. 인자는 serverName : Py..

ssjune.tistory.com

[pywin32/win32evtlog] - 13. [pywin32] NotifyChangeEventLog() 함수

 

13. [pywin32] NotifyChangeEventLog() 함수

NotifyChangeEventLog(handle, handle) 이벤트 로그가 쓰여지면 알려주는 함수입니다. 인자로는 handle : int, handle : int 가 있습니다. handle 은 OpenEventLog 함수의 리턴값으로 감시할 이벤트 로그의 핸들값..

ssjune.tistory.com

 

반응형

댓글()

2. [pywin32] GetEapUserIdentity() 함수

pywin32/win2kras|2018. 11. 4. 00:28
??? = GetEapUserIdentity(PhoneBook, Entry, Flags)

일단 이 함수는 웹 페이지에 제대로 된 소개가 없어서 제가 MSDN 페이지를 참조해서 만들었습니다.


이 함수는 현재 사용자에 대한 ID 정보를 검색합니다. 이 정보를 사용하여 EAP (Extensible Authentication Protocol)가 필요한 전화 번

호부 항목으로 RasDial을 호출합니다.

라고는 되어있는데 pywin32 에 RasDial 함수가 없으니...



인자로는 PhonBook:string, Entry:string, Flags: int 3개를 사용하는 듯 합니다.

PhoneBook:string 은 pbk라는 확장자를 사용하는 전화번호부 파일의 경로입니다.

Entry 는 전화번호부에서 사용하는 서비스 이름? 구별 이름? 같습니다.

Flags 는 플래그이며 win2kras.RASEAPF_Logon, win2kras.RASEAPF_NonInteractive, win2kras.RASEAPF_Preview 3가지가 있습니다.

간단히 설명하면 

win2kras.RASEAPF_NonInteractive : GUI 를 가져오지 않도록 설정한다. 

win2kras.RASEAPF_Logon : Winlogon에서 사용자 데이터를 가져오도록 한다.

win2kras.RASEAPF_Preview : 전화를 걸기 전에 ID 정보를 묻는 메시지를 표시하도록 지정합니다.



사용해 봤지만 결과가 잘 안나오더군요... 제가 놓친게 있는지...


반응형

'pywin32 > win2kras' 카테고리의 다른 글

1. [pywin32] win2kras 소개  (0) 2018.11.04

댓글()