Windows 사용 중 드래그가 안될 때

어떤 이유인지 알 수 없는데 어느 순간 드래그가 안되는 증상이 나타났습니다.
딱히 이상한 프로그램을 사용하는 것도 아닌데…

Shell 을 재시작하는 방법(explorer.exe 프로세스 종료 후 실행)도 있겠지만…

간단히 시도하는 방법

파일 탐색기에서 아무 파일이나 선택한 후 F2를 눌려 이름 변경 시작하고 ESC를 눌려 취소
이러고 나면 안되던 드래그가 되는 놀라운 경험!!!

PrimoCache로 HDD의 성능을 높여보자

PrimoCache 페이지: https://www.romexsoftware.com/en-us/primo-cache/

BS가 최근에 PC를 하나 장만하면서 AMD StoreMI를 믿고 SSD를 120GB 용량으로 구매를 했습니다.
그런데…
구매 후 며칠 지나지 않아서 AMD에서 StoreMI를 포기 선언했습니다.
현재는 다운로드 뿐 아니라 사용 설명서까지 모든 것이 내려갔습니다.

Windows 10 2004 업데이트도 점차 다가오는데 스토리지 디바이스의 지원이 끝나버려서 불안한 마음에 제거를 시도하였으나 부팅용으로 만든 StoreMI tier는 제거가 불가능하고 무조건 초기화를 해야만 한다는 사실을 알게 되었습니다.

대안을 찾아보던 중 PrimoCache를 알게 되었습니다.

Intel의 RST나 옵테인, FuzeDrive(구 AMD StoreMI)와 비교를 한다면…

Intel의 솔루션은 캐시 용량에 제한이 있고, 옵테인은 전용 H/W와 메인보드가 필요하며, RAID로 구성을 하게 되는 점이 특징입니다.

FuzeDrive는 캐싱이 아니라서 용량을 크게 손해보지 않는 장점이 있으나, 가상의 디스크로 묶어서 사용하기 때문에 되돌리는 것이 힘들고 문제가 발생하면 모든 데이터가 손실되는 단점이 있습니다.

그럼 PrimoCache는???

  • 커널 수준이 아닌 소프트웨어
  • 언제든지 캐싱 환경을 변경 가능
  • 32비트에서 4G 넘어서 사용 못하는 메모리를 활용할 수 있음
    하지만 HDD를 사용하는 PC 들은 대부분 64비트로 넘어왔기 때문에 의미 없음
  • 커널 수준이 아니기 때문에 부팅해서 소프트웨어가 실행되기 전까지의 과정은 속도 증가가 없음
    이 부분이 매우 안타까운 점

결론…

  • PC를 구매할 때 적당한 용량의 SSD를 구매해야 한다.
  • OS는 SSD에 곱게 설치한다.
  • SSD에 OS 설치 후 용량이 애매하게 남는 경우나, 사용하지 않는 서브 SSD가 있다면 HDD + PrimoCache로 조금 나은 환경을 만들 수 있다.

BS는… 이미 120GB라는 저용량 SSD를 구매한 상태기 때문에 그냥 살아보기로 했습니다. ㅠㅠ

원격 데스크톱 RDP 파일 설정

https://docs.microsoft.com/ko-kr/windows-server/remote/remote-desktop-services/clients/rdp-files

아무 내용 없이 링크만 하려니 좀 죄송한 감이 있어서

4K에서 원격 컴퓨터 접속 시 로컬 PC의 해상도에 맞춰서 원격 PC의 해상도를 결정하기 때문에 네트워크 사용량이 꽤 높아지는데
네트워크 대역폭 때문에 제대로 사용이 안된다면

  1. 그냥 느리게 참고 쓴다
  2. 로컬 PC의 해상도를 FHD로 낮추어 쓴다
  3. 원격 PC의 해상도를 FHD로 고정하여 쓴다

이런 방법들이 있을텐데요. 1번은 뭐… 느리게 참으려면 그냥 쓰면 될 거고
2번은 로컬 PC의 다른 것들이 뭉게져서 패스
3번을 알아보겠습니다.

  1. screen mode id:i:1
    창모드로 시작(추후에 전체화면 하면 되니까…)
  2. smart sizing:i:1
    창 크기에 맞게 줌인 줌아웃 한다
  3. desktopheight:i:1080
  4. desktopwidth:i:1920

이렇게 한 뒤 접속해서 창모드로 뜬 클라이언트를 전체 화면으로 바꾸면
원격 해상도를 FHD로 하여 로컬 해상도 4K에 맞게 확대해서 보여줍니다.
응용하면 줌아웃도 가능함

단, 가독성을 최대한 살릴려면 3, 4번에서 지정하는 해상도의 비율과 로컬 PC 해상도의 비율은 맞춰야 합니다.

Windows에서 Linux의 wget 이나 curl 비슷한 기능 실행하기

아무래도 GUI를 기본으로 하는 Windows라는 OS는 Command line 도구들이 조금 빈약합니다.
간단한 테스트나 다운로드를 위해 Linux에서 wget이나 curl을 많이 사용했는데,
Windows에 없어서 조금 불편할 때가 있습니다.
그나마 PowerShell을 통해 아래 명령어로 약간 비슷하게 흉내는 낼 수 있습니다.

# System.Net.WebClient 사용하기
$client = New-Object System.Net.WebClient
$client.DownloadFile("http://www.example.com/file.txt","C:\tmp\file.txt")
# Invoke-WebRequest 사용하기
Invoke-WebRequest -OutFile index.html http://www.example.com

그래도 영… wget이나 curl을 Windows 버전으로 구하는 게…

Windows 10 업데이트 KB4493509 설치 중 0x8e5e03fa 발생할 경우

Windows Update 문제 해결사를 실행해 본다

Windows 설정 > 업데이트 및 보안 > 문제 해결 > Windows 업데이트
이렇게 해서 문제 하결이 안되면 다음으로

Windows Update 서비스 관련 초기화

관리자 쉘을 엽니다. (이제 Windows 10 에서 기본이 PowerShell 인데, 명령 프롬프트여도 무방)
아래 명령을 하나씩 실행합니다.

net stop wuauserv
net stop cryptsvc
net stop bits
net stop msiserver
ren C:\Windows\SoftwareDistribution SoftwareDistribution.old
ren C:\Windows\System32\catroot2 catroot2.old
net start wuauserv
net start cryptsvc
net start bits
net start msiserver

이제 컴퓨터릴 재시작 하고 나서 업데이트를 재시도 합니다.
그리고 나서 이제 불필요해진 .old 폴더를 찾아가서 삭제합니다.
그래도 안되면…

이제 희망이 거의 없다

마지막으로 기대 볼 만한 것은​

서드파티 보안 솔루션 삭제 (쉽게 얘기하면 은행 사이트, 정부 사이트 등에서 마구 설치하는 잡다하고 세상 쓸모 없는 녀석들)

​그래도 안되면… 정상적인 업데이트 파일을 받을 수 있는지 확인…
당연히 인터넷이 안정적이여야 하고,

Windows 설정 > 시간 및 언어 > 지역 > 국가 또는 지역… 지역이 이상하면 해당 지역과 언어에 맞는 업데이트 파일을 받지 못할 수 있다고 하네요…

​그래도 안되면 시스템 파일 검사 (당연히 관리자 권한으로)

sfc /scannow
DISM /Online /Cleanup-Image /RestoreHealth

그래도 안되면 msconfig를 실행해서 일반 > 시작 모드 선택 을 선택 모드로 하고
시스템 서비스만 로드하고, 시작 항목은 로드 하지 않도록 한 뒤,
서비스 탭 (msconfig 의 3번째 탭)에서 Microsoft의 서비스를 제외한 나머지를 모두 사용 안함 처리
그리고 재시작 해서 시도…

아마 여기까지 오면 포맷 하거나 초기화를 하는 것이 나을지도 모르겠습니다.

마지막으로는 Windows Update Catalog 사이트에서 해당 업데이트를 받아서 직접 설치를 시도해 봅니다.

https://www.catalog.update.microsoft.com/Home.aspx

​이제 해결이 되었나요?

해결 되었으면 좋겠네요…
BS는 서비스 관련 초기화를 했더니 해결 되었습니다.

Windows 10 1809 다중 사용자 환경

BS가 iMac + Boot Camp 로 Windows 10 Pro 를 설치해서 사용 중입니다.
그리고 Windows 10 에 BS, 아내, 아이들 4개의 계정을 만들었습니다.
그런데 Windows 10 이라는 Desktop 용 OS의 기본 동작 중 하나가 불편을 줍니다.
최근 사용한 사용자를 자동으로 로그인 시키고, 이전에 실행 중이던 프로세스를 자동으로 실행하는 기능입니다.
PC를 혼자서 사용할 때에는 유용할 수 있는 기능이지만 다중 사용자 환경에서는 아래와 같은 상황이 벌어집니다.

  • PC를 켜서 BS가 사용 후 시스템 종료
  • PC를 켜서 아이가 사용
  • 아이가 PC를 종료하려고 하면 BS의 계정이 로그인 되어 있는데 종료하겠냐고 확인함
  • 아이는 아빠가 하던 무언가가 사라질까 걱정되어 PC를 종료하지 못함

유저가 아래의 설정에서 해당 기능을 On/Off 할 수 있습니다.

설정 > 계정 > 로그인 옵션 > “업데이트하거나 다시 시작한 후 내 로그인 정보를 사용하여 내 디바이스 설정을 완료합니다”

하지만 계정마다 설정해야 하는 문제가 있기 때문에 아래와 같은 방법으로 시스템 설정을 바꾸는 것이 좋습니다.

  • gpedit.msc 를 실행합니다.
  • 컴퓨터 구성 > 관리 템플릿 > Windows 구성 요소 > Windows 로그온 옵션 항목으로 이동합니다.
  • “Sign-in last interactive user automatically after a system-initiated restart” 라는 항목의 구성을 “사용 안 함”으로 설정합니다.

레지스트리 값 경로

  • 키: HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Policies/System
  • 값 이름: DisableAutomaticRestartSignOn
  • 위 값이 존재하지 않을 때 : 구성하지 않음 (Not Configured) (기본값)
  • 위 값이 0 : 사용 (자동 로그인 됨)
  • 위 값이 1 : 사용 안 함 (자동 로그인 되지 않음)

Windows 10 의 다중 사용자 환경에서 잊지 않고 설정하세요.
참고자료: https://docs.microsoft.com/ko-kr/windows-server/identity/ad-ds/manage/component-updates/winlogon-automatic-restart-sign-on–arso-

Windows 설치 목록에서 숨기는 방법

BS가 Boot Camp로 Windows를 사용하는데, 바보같은 Apple의 드라이버 설치가 엄청나게 설치 목록에 뜨게 되었습니다.
BS의 다른 가족 3명이 모두 컴맹인지라 혹여나 이것들을 삭제할까 걱정되어 숨기고 싶었습니다.
역시나… Windows는 방법이 있습니다.
레지스트리에서 설치 제거 항목을 찾아 갑니다.
보통 아래의 경로 중에 하나에 존재합니다.
HKLM/SOFTWARE/Microsoft/Windows/CurrentVersion/Uninstall
HKLM/SOFTWARE/Wow6432Node/Microsoft/Windows/CurrentVersion/Uninstall
숨기고자 하는 항목의 키를 찾습니다.
해당 키에 DWORD의 값을 하나 추가합니다. 이름은 SystemComponent
이름대로 값은 1로 설정합니다.
이제 프로그램 및 기능 또는 Windows 10의 앱 설정 화면에서 해당 항목이 보이지 않게 됩니다.

맥용 키보드를 Windows 에서 사용하기 위한 키보드 배열 수정

어쩌다보니 iMac + Mojave + Bootcamp + Windows 10 1809 를 사용하게 되었습니다.
맥용 키보드와 Windows용 키보드의 배열이 달라서 조금 불편함이 있습니다.
참고로 BS는 NumPad가 있는 애플 정품 키보드를 사용 중입니다.

일단 BS는 취미로 각종 개발툴을 사용하는데 여기에서 자주 쓰이는 단축키인 Shift + Space 를 버릴 수 없습니다.
따라서 Windows 의 101A 타입으로 키배열을 설정했습니다.
101A 타입은 우측 Alt 키를 한/영 전환키로, 우측 Ctrl 키를 한자키로 사용합니다.

macOS는 Command 키를 자주 사용하고 기본 한/영 전환이 CapsLock 또는 Shift + Space에 바인딩 되어 있습니다.
Windows는 Ctrl, Alt 키를 자주 사용합니다. 그리고 101A에서 우측 Alt가 한영 전환입니다.
사용해보면 Left Alt와 Right Alt(한영)을 사용할 때 엄지 손가락으로 누르기가 굉장히 불편합니다.

그리고 Print Screen, Scroll Lock, Pause, Insert, NumLock 은 보이지도 않습니다.

우선 Windows를 Bootcamp로 설치하고 나서 드라이버 설치가 끝난 상태면
Bootcamp를 통해서 F1 ~ F12 의 키를 멀티미디어 키가 아닌 Function키로 설정할 수 있습니다.

이렇게 하고 나면

F14 (Home 키 위에 위치) -> Print Screen
F15 (PageUp 키 위에 위치) -> Scroll Lock
F16 (NumPad의 Clear 키 위에 위치) -> Pause
fn (Home 키 왼쪽에 위치) + return -> Insert

이렇게 해서 사용할 수 있게 됩니다. 여전히 Windows용 키의 Application 키(마우스 우클릭 했을 때 메뉴가 나오게 하는 키)가 없습니다.

BS는 여기에서 약간의 배열 변경을 추가하였습니다.

왼쪽 Command -> 왼쪽 Alt
왼쪽 Alt -> 왼쪽 Win
오른쪽 Command -> 한/영 (101A의 오른쪽 Alt)
오른쪽 Alt -> Application 키
F13 (fn 위에 위치) -> Insert 키

fn키는 별도의 스캔코드를 가지지 않는 하드웨어 키 조합용으로 사용할 수 없습니다. ㅜㅜ

이렇게 해서 최대한 Windows용 키보드 배열과 유사하게 수정해서 사용 중입니다.
마우스도 바꿨습니다. 원버튼뿐인 맥용 매직 마우스는 봉인하고 유사?한 디자인의 APOINT M302 화이트로…

이제 좀 Windows 답게 사용할 수 있네요.

… 이제 본론 입니다.

키보드 배열을 바꾸기 위한 레지스트리(Registry) 편집
(잘 모르면 시도하지 마세요. 까닥 잘못하면 키보드 입력이 안되어 문제가 될 수 있습니다.)

키 위치: HKLM/SYSTEM/CurrentControlSet/Control/Keyboard Layout
값 이름: Scancode Map
값 타입: 이진값(Binary)

입력은 보통 8바이트 단위로 줄바꿈이 되는데 설명을 위해 4바이트 단위로 잘랐습니다.

00 00 00 00 처음 8 바이트는 무조건 0
00 00 00 00
06 00 00 00 5개의 배열을 지정하기 위해 6 (5 + 1) 입력
38 00 5b e0 E0_5B(Left Command) -> 00_38(Left Alt)
5b e0 38 00 00_38(Left Option) -> E0_5B(Left Win)
38 e0 5c e0 E0_5C(Left Command) -> E0_38(Right Alt, 한영)
5d e0 38 e0 E0_38(Right Option) -> E0_5D(Application)
52 e0 64 00 00_64(F13) -> E0_52(Insert)
00 00 00 00 마지막 4 바이트는 무조건 0

원래대로 돌리고 싶으면 해당 값을 지우면 됩니다.
변경 후에는 Reboot이 필요합니다.

만약 다중 사용자 환경에서 본인만 바꿔서 사용하고 싶으면 키보드 후킹을 구현하거나, AutoHotkey와 같은 유틸리티를 사용하는 것을 권장합니다.

그리고 마지막 보너스
키보드의 스캔 코드를 구하는 간단한 소스입니다.
핵심은 “RegisterRawInputDevices()으로 등록하고, GetRawInputData() 으로 가져온다” 입니다.
.NetFramework 4를 지정해서 빌드한 Release 파일도 포함되어 있습니다.