WinApi에서 프로세스를 이름이 아닌 다른 방법으로 구분하는 방법?

msglsj의 이미지

WinApi를 공부하는 겸 현재 실행되고 있는 프로세스들의 정보를 전부 불러와서 콘솔창에 출력해주는 프로그램을 하나 만들어 보았습니다.

프로세스를 불러오는 구조체인 PROCESSENTRY32의 멤버변수에
프로세스의 이름을 저장해두는 szExeFile을 보니 특정 프로세스만을 종료시킬 수 있겠다 싶어서
반복루틴에 특정 이름의 프로세스가 발견되면 핸들을 얻어와 종료메세지를 보냈더니 아주 잘 작동 했습니다.

이 쯤에서 궁금해진 것이 똑같은 프로그램이라도 실행파일의 이름이나 프로세스 이름은 얼마든지 바뀔 수 있을텐데
프로세스 이름이 바뀐 한 프로그램을 전부 종료시켜보고 싶을 때는 프로세스의 이름이 아닌 어떤 정보를 기준으로 종료 시켜야 할지 궁금합니다.

모자란 햇병아리에게 조언 부탁드립니다.

익명 사용자의 이미지

윈도우 상에서 tasklist 명령어를 cmd 창에서 실행 해보면
프로세스별 고유 식별자인 PID 가 윈도우 에도 존재 합니다.

구조체 자세히 살펴보면 있지 않을 까요?

msglsj의 이미지

프로세스별 고유 식별자인 PID는 매번 실행할 때 마다 변경될 뿐더러
각각 실행된 프로그램의 PID는 전부 달라서 하나의 PID로는 같은 프로그램이 여러개 실행됐을 때 전부 종료시킬 수 없을 것 같습니다.

ps) 살펴보니 PID는 th32ThreadID에 저장되네요

mirheekl의 이미지

원본파일을 알고 있을 경우 파일 리소스라든지 CRC체크 등으로 알 수 있지만, 그래도 몇 가지 문제가 있습니다.

- 일단 리네임이 되었다고 가정하면 파일 이름을 모르기 때문에 모든 프로세스의 파일 정보를 다 뒤져야 합니다.
- 파일이 살짝만 업데이트되어도 찾을 수 없게 됩니다. 리소스의 특정 정보를 가지고 찾아낼 수도 있지만 (OriginalFileName 이랄지..) 그마저도 조작이 가능하기 때문에 말이죠.

다만 디지털 시그니처를 지닌 프로그램이거나 닷넷 모듈인 경우 변화의 폭을 줄일 수는 있습니다.

--

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.