달력

10

« 2024/10 »

  • 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
  • 27
  • 28
  • 29
  • 30
  • 31

 

윈도우즈 10에서 업데이트가 실패해서 여러가지 방법을 찾았는데, 윈도우즈 11에서도 업데이트 오류가 동일하게 발생했다. 윈도우즈 11에서는 윈도우즈 업데이트가 발생했은때, 여지것 한번도 사용하지 않았던 윈도우즈 셋팅에 있는 "문제 해결" 메뉴를 이용하여 해결하였다.

 

그래서 아래와 같은 윈도우즈 업데이트 창에서 업데이트를 실행하면 아래의 이미지와 같이 업데이트 에러가 보인다.

 

이때 창의 왼쪽 중간부근에 있는 문제 해결 메뉴를 선택하고, 나오는 화면에서 "추가 문제 해결사"를 선택한다.

 

그러면 아래의 화면으로 바뀌는데, 여기서 "Windows" 업데이트"를 클릭하고, "문제 해결사 실행"버튼은 누르면 된다.

 

실행 버튼을 누르면 아래과 같이 진행 상태고 모이고 자체적으로 이슈가 되는 내용들을 점검하게 된다.

 

 

그리고 아래과 같이 Windows 업데이트에서의 문제를 해결해 준다.

 

 

:
Posted by 행복상자
2024. 3. 2. 19:26

Windows 11 업그레이드 하기 Tip & Tips/Windows2024. 3. 2. 19:26

Windows 10을 사용하고 있는데, Windows 11 업그레이드 조건을 만족하지 못해서 업그레이드 하지 않고 사용하고 있다.

그런데, Windows 10도 2025년부터 업데이트가 되지 않는나고 해서, 새로 PC를 바꿔야 할지, 2025년까지 쓰다고 그때가서 다시 고민할지에 대해서 선택이 필요한 사항이다.

참고로 내가 사용하는 PC는 2013년도에 조립해서, SSD만 교체해서 여지것 잘 사용해 왔다.

iMac과 맥북에서 주로 개발하고, PC는 원격 데스크 탑과 문서작업용으로 사용해 오던 것이다.

 

때마침 연휴기간이고 작업을 해보기로 했다. 

이전에 사두었던 SSD에다 C드라이브를 복제한 후에 기존 SSD와 교체해서 설치했다.

 

Command line에서 "regdit" 명령을 실행한다.

 

그러면 아래와 같이 "레지스트리 편집기"가 실행될 것이다.

 

 

1. "\HKEY_LOCAL_MACHINE\SYSTEM\Setup"에 "LabConfig" Key를 추가한다.

2. 다음의 값들을 추가한다.

        1) BypassTMPCheck    REG_DWORD    1

        2) BypassTMPCheck    REG_DWORD    1

        3) BypassTMPCheck    REG_DWORD    1

        4) BypassRAMCheck    REG_DWORD    1

 

위와 같이 작업을 하면 아래와 같이 생성이 될 것이다.

 

3. 윈도우 설치를 위해서 Windows 11이미지를 USB에 생성한 후에, USB 슬롯에 넣고 실행을 해야 하는데, 몇번을 setup.exe를 실행했지만 진행이 되지 안는데 대신에 "setup /product server"를 실행하면 윈도우 11 설치 창니 나타마면서 설치가 진행될 것이다.

 

 

설치작업은 약 1시간이상 걸리는데, 

설치후에 윈도우즈 업데이트도 정상적으로 진행되어서, 사용하는데는 별다른 문제는 없었다.

 

 

다만, 언제 업데이트가 막힐지는 MS의 정책과 관련된 것이어서, 사용에는 유의할 필요가 있다.

:
Posted by 행복상자

지난 며칠전에 Windows 환경에서 리눅스나 Unix에서 사용하는 kill 명령과 비슷한 프로그램으로 "taskkill"에 대해서 이야기하였다. 내가 "taskkill"에 대해서 찾아보게된 계기는 Visual Studio의 Debug Mode상에서 생성된 Process를 중단할 필요에 의해서 였는데, 실제로 해보고 결과를 이야기하기로 하였었다. (지난 글)


"Taskkill"을 이용해서 Visual Studio개 생성한 Process의 제거는 결론적으로 실패였다.


우선 Visual Studio의 실행을 중단하고, 

TASKKILL /IM myprogram.exe /F /T

을 실행하거나 또는


TASKKILL /PID 1004 /F /T


를 실행해 보았지만, "Access Denied" 메시지를 보이고, 중단을 원하던 Process는 그대로 남아 있었다.


그래서, 또하나의 방법으로 "Power Shell"에서 제공하는 "Stop-Process" Cmdlet을 이용해 보기로 하였다. "Power Shell"은 kill 이라는 Alias명으로 이미정의 정의되어져서 "Stop-Process" 대신 사용이 가능하다.

(Power Shell의 "Stop-Process" 참조 사이트 : Version 6기준)


Powershell을 실행하고, 콘솔창에서 다음과 같이 실행하여 보았다.

Stop-Process -Name "myprogram.exe"

그러나 역시나 "Access Denied" 메시리즐 보이면서 Process를 중단하는 것을 실패했다. (다른 옵션들도 주고 테스트했지만 실패했다.)



뭔가 강력한 어떤것이 필요하다고 생각이 들어서, 이리 저리 찾아보니, WMI를 이용하는 방법을 찾았다. 

이전에 알던 WMI의 사용법은 Windows시스템에 대한 정보들을 얻어오는 방법으로 이용을 하곤 하였는데, 좀 다른 방식의 사용법으로 Process를 Kill하는 방법도 제공하고 있었다.


WMI를 사용하여 Process를 제거하는 방법은 다음과 같다.

WMIC process where name='myprogram.exe' delete


결과적으로는 그토록 중단시키려고 했던, 좀비 프로그램을 메모리에서 삭제해버리고야 말았다.


여러가지 방법들을 찾아서 실행하면서 이전에 모르던 많은 것들을 알게 되어서 나름 즐거웠다.

오랜만에 WMI를 살펴보니, Program 이름과 PID를 가져오는 방법도 제공하고 있는데, 좀 더 살펴보고 시간이 되면 정리해 봐야겠다.


공부할 것은 많다. 알게되는 것도 많지만, 잊어버리는 것도 그만큼 많은것 같다.


:
Posted by 행복상자
2018. 11. 18. 22:00

Windows의 kill 명령어 사용(1): Taskkill Tip & Tips/Windows2018. 11. 18. 22:00

최근에는 Windows 환경에서 프로그래밍을 할일이 거의 없다. 아니 정확하게 말하면, 윈도우 프로그램을 개발할 일이 없다.

개인적으로 어렸을때부터 쉽게 접했던 환경이었지만, 요즘은 Android나 iOS 환경에서 App을 개발하는 사람은 쉽게 찾아볼수 있으나, Windows 환경에서 WinForm기반의 .Net으로 C#이나 VB.Net로 개발하는 사람을 찾기 힘들다.


지난주부터 이전에 개인적으로 만들던 툴을 Windows 버전으로 만들 생각을 가지고, Visual Studio 2017을 이용해서 개발과 Debug를 하고 있는데, 가끔씩 Debug mode로 생성한 파일들이 메모리상에 그대로 떠 있어서, 다시 빌드 후에 실행이 되지 않는 상황이 반복되고 있어서, 인터넷을 검색하다 보니, "Taskkill"이라는 프로그램을 발견하게 되었다.


이 프로그램은 Microsoft에서 제공하는 것으로 Unix나 Linux에서 사용하는 'kill' 명령어와 같은 기능을 수행한다고 생각하면 된다.


Wikipedia에써는 다음과 같이 설명을하고 있다. 

   - https://en.wikipedia.org/wiki/Kill_(command)#Microsoft_Windows

간략하게 이야기 한다면, 

kill명령과 비슷한 MS의 명령으로는 "Stop-Process"라는 Cmdlet이 있는데, 이를  kill 이라는 이름으로 alias 해서 사용하고 있다. (마치 kill 처럼 사용한다.)

그리고, taskkill 이라는 프로그램이 있다. (Wiondows 어느 버전인지는 모르지만, Windows XP부터 지원되고 있는 것으로 보인다.)

 

사용법은 간단하다. DOS창에서  "taskkill /?" 을 타이핑하고 실행하면, 도움말이 아래와 같이 나타날 것이다.


Microsoft Windows [Version 10.0.17134.285]

(c) 2018 Microsoft Corporation. All rights reserved.


C:\Users\hazppyzoo>taskkill /?


TASKKILL [/S system [/U username [/P [password]]]]

         { [/FI filter] [/PID processid | /IM imagename] } [/T] [/F]


Description:

    This tool is used to terminate tasks by process id (PID) or image name.


Parameter List:

    /S    system           Specifies the remote system to connect to.


    /U    [domain\]user    Specifies the user context under which the

                           command should execute.


    /P    [password]       Specifies the password for the given user

                           context. Prompts for input if omitted.


    /FI   filter           Applies a filter to select a set of tasks.

                           Allows "*" to be used. ex. imagename eq acme*


    /PID  processid        Specifies the PID of the process to be terminated.

                           Use TaskList to get the PID.


    /IM   imagename        Specifies the image name of the process

                           to be terminated. Wildcard '*' can be used

                           to specify all tasks or image names.


    /T                     Terminates the specified process and any

                           child processes which were started by it.


    /F                     Specifies to forcefully terminate the process(es).


    /?                     Displays this help message.


Filters:

    Filter Name   Valid Operators           Valid Value(s)

    -----------   ---------------           -------------------------

    STATUS        eq, ne                    RUNNING |

                                            NOT RESPONDING | UNKNOWN

    IMAGENAME     eq, ne                    Image name

    PID           eq, ne, gt, lt, ge, le    PID value

    SESSION       eq, ne, gt, lt, ge, le    Session number.

    CPUTIME       eq, ne, gt, lt, ge, le    CPU time in the format

                                            of hh:mm:ss.

                                            hh - hours,

                                            mm - minutes, ss - seconds

    MEMUSAGE      eq, ne, gt, lt, ge, le    Memory usage in KB

    USERNAME      eq, ne                    User name in [domain\]user

                                            format

    MODULES       eq, ne                    DLL name

    SERVICES      eq, ne                    Service name

    WINDOWTITLE   eq, ne                    Window title


    NOTE

    ----

    1) Wildcard '*' for /IM switch is accepted only when a filter is applied.

    2) Termination of remote processes will always be done forcefully (/F).

    3) "WINDOWTITLE" and "STATUS" filters are not considered when a remote

       machine is specified.


Examples:

    TASKKILL /IM notepad.exe

    TASKKILL /PID 1230 /PID 1241 /PID 1253 /T

    TASKKILL /F /IM cmd.exe /T

    TASKKILL /F /FI "PID ge 1000" /FI "WINDOWTITLE ne untitle*"

    TASKKILL /F /FI "USERNAME eq NT AUTHORITY\SYSTEM" /IM notepad.exe

    TASKKILL /S system /U domain\username /FI "USERNAME ne NT*" /IM *

    TASKKILL /S system /U username /P password /FI "IMAGENAME eq note*"


대략적인 사용법은 아래의 "Examples"를 보면 이해가 쉽다.

명령어를 보면 "/M" 다음에 "imagename"를 넣게 되어 있는데, 프로그램 file명을 넣어 주면 된다.


TASKKILL /IM notepad.exe


PID를 가져오는 방법은 몇가지가 있는데, "작업관리자"를 실행해서 보는 방법과 "Powershell"를 이용하여 process의 PID를 가져오는 방법등이 있다.


이외에도 Windows에서 제공하는 "tasklist.exe"를 이용해서 가져오는 방법을 사용할 수도 있다.

나는 "tesklist.exe"를 이용하였는데, sygwin 설치하면 설치된 "grep"을 이용해서 가져왔다.

아래와 같이 "/T"옵션을 주게되면, 자식 프로세스도 같이 정리하는 기능을 사용하게 된다. 


TASKKILL /PID 6224 /PID 4716 /T


그리고, "/F" 옵션을 같이 사용하면 강제적으로 프로그램을 중단시키게 된다.



근데, 내가 위에서 이야기한 Debug mode실행시에 올라왔던 Process는 어떻게 되었을까?

결론적으로 아직 죽이지 못하고 있다. "/F" 옵션을 주었으나, 권한이 없다고 하면서 실패하고 있는 상황이다. 


그래서, 이제는 PowerShell에 있는 Stop-Process나 kill 명령을 이용하여 좀비 프로세스를 중단시켜 보려고 한다. 좀 정리가 되면, 이에 대해서는 다시 업데이트 할 예정이다.



[업데이트]

taskkill로 제거하지 못했던 process는 "wmic"에서 제공하는 기능을 이용해서 메모리에서 kill할 수 있는데, 가장 강력한 Windows에서 Process죽이기를 제공한다.

이에 대한 글은 "Windows의 kill 명령어 사용(2): Stop-Process and wmic"에 정리하였다.



:
Posted by 행복상자