# [기능 1] 비활성화 function Do-Disable { $os = Get-CimInstance Win32_OperatingSystem if ($os.Caption -match "Home") { Write-Host "`n[지원 불가] Windows Home 에디션은 정책 설정을 지원하지 않습니다." -ForegroundColor Red Read-Host "엔터를 누르면 메뉴로 돌아갑니다..." return }
# [2. 즉시 관리자 권한 확인 및 상승] if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host "`n[권한] 관리자 권한이 필요합니다. 승인 팝업을 확인해주세요..." -ForegroundColor Yellow try { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs } catch { Write-Host "`n[오류] 권한 승격에 실패했습니다." -ForegroundColor Red Read-Host "엔터를 누르면 종료합니다." } exit }
# --- 전역 설정 및 경로 --- $configPath = "C:\ProgramData\ssh\sshd_config" $fwSecureName = "OpenSSH-Server-In-TCP-Secure" $adminKeyPath = "C:\ProgramData\ssh\administrators_authorized_keys"
# [함수: 서비스/시스템 재시작 선택] function Invoke-ApplyChanges { Write-Host "`n========================================" -ForegroundColor Magenta Write-Host "설정 변경을 적용하려면 서비스를 재시작해야 합니다." -ForegroundColor Yellow Write-Host " 1. SSH 서비스만 재시작 (즉시 반영)" Write-Host " 2. 시스템 전체 재부팅 (권장)" Write-Host " 3. 나중에 적용 (메뉴로 돌아가기)" $ans = Read-Host "선택"
if ($ans -eq "1") { Restart-Service sshd -Force Write-Host "SSH 서비스가 성공적으로 재시작되었습니다." -ForegroundColor Green Start-Sleep -Seconds 1 } elseif ($ans -eq "2") { Write-Host "잠시 후 시스템이 재부팅됩니다..." -ForegroundColor Cyan Read-Host "엔터(Enter)를 누르면 즉시 재부팅합니다" Restart-Computer -Force } }
# [함수: 현재 방화벽 허용 IP 가져오기] function Get-AllowedIPs { $rule = Get-NetFirewallRule -Name $fwSecureName -ErrorAction SilentlyContinue if ($rule) { if ($rule.Enabled -eq 'True') { $address = (Get-NetFirewallAddressFilter -AssociatedNetFirewallRule $rule).RemoteAddress return $address } else { return "보안 규칙 비활성화됨" } } return "제한 없음 (모두 허용 중)" }
# [함수: 등록된 공개키 정보 가져오기] function Get-SSHKeyStatus { if (Test-Path $adminKeyPath) { $keys = Get-Content $adminKeyPath | Where-Object { $_.Trim() -ne "" } if ($keys) { return "등록됨 ($($keys.Count)개)" } return "파일은 있으나 내용 없음" } return "미등록 (키 파일 없음)" }
Write-Host "=================================================" -ForegroundColor White Write-Host " OpenSSH 서버 보안 진단 및 관리 (V3.7) " -ForegroundColor Cyan Write-Host "================================================="
if ($svc) { $svcStatus = $svc.Status $startType = $svc.StartType $svcCol = "Red"; if ($svcStatus -eq 'Running') { $svcCol = "Green" } Write-Host " ● 서비스 상태 : " -NoNewline; Write-Host "$svcStatus ($startType)" -ForegroundColor $svcCol } else { Write-Host " ● 서비스 상태 : " -NoNewline; Write-Host "미설치" -ForegroundColor Red }
# [함수: 공개키 관리 메뉴] function Manage-SSHKeys { while ($true) { Clear-Host Write-Host "=========================================" -ForegroundColor Cyan Write-Host " 공개키(SSH Key) 관리 시스템 " -ForegroundColor Cyan Write-Host "=========================================" Write-Host " 1. 새로운 SSH 키 쌍 생성 (ED25519)" Write-Host " 2. 기존 공개키(.pub) 등록 (기본경로 지원)" Write-Host " 3. 서버 등록 키 전체 삭제 (초기화)" Write-Host " 4. 현재 등록된 공개키 목록 확인" Write-Host " 0. 돌아가기" Write-Host "=========================================" $kSel = Read-Host "작업 선택"
◎ 개요 Windows 11에서 OpenSSH 서버를 설치하고 사용하는 것은 원격 관리와 보안 연결을 위해 매우 유용한 기능입니다. OpenSSH는 기본적으로 Windows 10 (1809 버전 이후)와 Windows 11에서 선택적 기능으로 제공되며, 별도의 타사 소프트웨어 없이도 SSH 연결을 설정할 수 있습니다.
1. OpenSSH 서버 설치하기 1.1 GUI를 통한 설치
- Windows 11에서 OpenSSH 서버를 설치하는 가장 쉬운 방법은 설정 메뉴를 통하는 것입니다:
설정 > 시스템 > 선택적 기능으로 이동합니다
"기능 보기"를 클릭합니다
"OpenSSH 서버"를 검색하고 선택합니다
"다음" 버튼을 클릭한 후 "설치"를 선택합니다
012345
1.2 PowerShell을 통한 설치 관리자 권한으로 PowerShell을 실행하고 다음 명령어를 사용할 수 있습니다:
# OpenSSH 서버 설치 > Add-WindowsCapability -Online -Name OpenSSH.Server~~~~0.0.1.0
- 설치 확인을 위해 다음 명령어를 실행할 수 있습니다:
> Get-WindowsCapability -Online | Where-Object Name -like 'OpenSSH*'
2. OpenSSH 서비스 구성 및 시작 2.1 서비스 시작하기 - 설치가 완료되면 OpenSSH 서비스를 시작해야 합니다:
# SSH 서비스 시작 > Start-Service sshd
# 자동 시작 설정 (선택사항) > Set-Service -Name sshd -StartupType Automatic
2.2 GUI를 통한 서비스 관리
시작 메뉴 > services.msc 검색 후 실행
"OpenSSH SSH Server" 서비스를 찾습니다
서비스를 우클릭하여 "속성"을 선택합니다
"시작 유형"을 "자동"으로 변경합니다
"시작" 버튼을 클릭하여 서비스를 시작합니다
3. 방화벽 구성 OpenSSH 서버 설치 시 일반적으로 방화벽 규칙이 자동으로 생성됩니다. 하지만 확인이 필요합니다:
# 방화벽 규칙 확인 if (!(Get-NetFirewallRule -Name "OpenSSH-Server-In-TCP" -ErrorAction SilentlyContinue | Select-Object Name, Enabled)) { Write-Output "Firewall Rule 'OpenSSH-Server-In-TCP' does not exist, creating it..." New-NetFirewallRule -Name 'OpenSSH-Server-In-TCP' -DisplayName 'OpenSSH Server (sshd)' -Enabled True -Direction Inbound -Protocol TCP -Action Allow -LocalPort 22 } else { Write-Output "Firewall rule 'OpenSSH-Server-In-TCP' has been created and exists." }
4. 기본 SSH 연결 테스트 설치가 완료되면 로컬에서 SSH 연결을 테스트할 수 있습니다:
> ssh localhost # 또는 > ssh username@127.0.0.1
원격 컴퓨터에서 연결하려면:
> ssh username@server-ip-address
5. OpenSSH 서버 구성 설정 5.1 구성 파일 위치 - OpenSSH 서버의 구성 파일은 C:\ProgramData\ssh\sshd_config에 위치합니다. 이 파일을 통해 다양한 설정을 변경할 수 있습니다.
5.2 포트 변경
- 기본 SSH 포트 22를 다른 포트로 변경하려면:
관리자 권한으로 C:\ProgramData\ssh\sshd_config 파일을 편집합니다
#Port 22 줄을 찾아 주석을 제거하고 원하는 포트로 변경합니다:
Port 2022
SSH 서비스를 재시작합니다:
> Restart-Service -Force -Name sshd
6. 공개키 인증 설정 6.1 SSH 키 생성 보안을 강화하기 위해 공개키 인증을 사용할 수 있습니다:
마이크로소프트가 2025년 Microsoft Build 컨퍼런스에서 Windows Subsystem for Linux(WSL)의 오픈소스화를 발표한 이후, 첫 번째 오픈소스 버전인 WSL 2.6.0이 프리릴리즈로 공개되었습니다. 이번 릴리즈는 WSL의 9년 여정에서 가장 중요한 이정표로, 개발자 커뮤니티에게 완전히 새로운 가능성을 열어주고 있습니다.
◎ WSL 오픈소스화의 역사적 의미 - Build 2025에서의 발표 > 마이크로소프트는 2025년 5월 19일 Microsoft Build 개발자 컨퍼런스에서 WSL의 완전한 오픈소스화를 발표했습니다. 이는 WSL GitHub 저장소에서 제기된 첫 번째 이슈인 "이것이 오픈소스가 될 것인가?"라는 질문에 대한 최종적인 답변이기도 합니다. > CEO 사티아 나델라는 기조연설에서 오픈소스 이니셔티브의 중요성을 강조하며, WSL 오픈소스화를 통해 투명성 향상, 커뮤니티 협업 촉진, 혁신 가속화를 목표로 한다고 밝혔습니다.
- MIT 라이선스 하에서의 공개 > WSL은 MIT 라이선스 하에 공개되어 누구나 소스 코드를 검토하고, 수정하며, 프로젝트에 직접 기여할 수 있게 되었습니다. 이는 마이크로소프트가 오픈소스 원칙을 수용하고 개발자 커뮤니티를 지원하겠다는 의지를 보여주는 중요한 신호입니다.
◎ WSL 2.6.0의 주요 개선사항 - 안정성 및 버그 수정 WSL 2.6.0은 다양한 안정성 개선과 함께 여러 중요한 버그 수정을 포함하고 있습니다:
다국어 문자열 업데이트: 현지화된 문자열이 업데이트되었습니다
배포판 등록 해제 개선: BasePath가 존재하지 않는 배포판을 등록 해제할 때 예외가 발생하지 않도록 수정 (이슈 #13004 해결)
다운로드 오류 수정: URL에 매개변수가 포함된 경우 배포판 다운로드가 실패하는 문제 해결
systemd 사용자 세션 문제 해결: systemd 사용자 세션과 관련된 다양한 문제 수정 (이슈 #13053 해결)
- 시스템 레벨 개선
wslsettings 안정성: wslservice에서 호출할 때 wslsettings가 충돌하는 문제 수정
VHD 이동 최적화: 배포판 VHD 이동 시 MOVEFILE_WRITE_THROUGH 설정으로 안정성 향상 (이슈 #13055 해결)
hosts 파일 파싱 개선: Windows 'hosts' 파일 파싱 시 BOM 헤더 무시 (이슈 #9642 해결)
디스크 오류 보고: mount()가 EUCLEAN으로 실패할 때 손상된 디스크를 올바르게 보고 (이슈 #13074 해결)
◎ WSL의 기술 아키텍처 - 오픈소스화된 구성 요소 WSL의 아키텍처는 여러 분산 구성 요소로 이루어져 있으며, 이 중 대부분이 오픈소스로 공개되었습니다:
WSL 서비스: wslservice.exe - WSL VM 시작, 배포판 관리, 파일 액세스 공유 마운트 등을 담당
- Linux VM 내부에서 실행되는 구성 요소:
init 및 데몬 프로세스: 시작용 init, 네트워킹용 gns, 포트 포워딩용 localhost 등
파일 공유: WSL의 plan9 서버 구현을 통한 Linux-Windows 간 파일 공유
- 여전히 비공개인 구성 요소 > 일부 구성 요소는 Windows 이미지의 일부로 남아있어 현재로서는 오픈소스화되지 않았습니다:
Lxcore.sys: WSL 1을 구동하는 커널 측 드라이버
P9rdr.sys 및 p9np.dll: "\wsl.localhost" 파일시스템 리디렉션을 실행하는 구성 요소
◎ 개발자 커뮤니티에 미치는 영향 - 커스터마이제이션과 기여 기회
> 오픈소스화를 통해 개발자들은 자신의 특정 요구에 맞게 WSL을 커스터마이즈하고, 버그를 더 빠르게 수정하며, 새로운 기능을 추가할 수 있게 되었습니다. 이는 더 나은 성능, Linux 서비스와의 향상된 통합, 그리고 크로스 플랫폼 작업을 위한 더 강력한 도구셋으로 이어질 것으로 예상됩니다.
- 보안 강화
> 오픈 소스 코드베이스에 대한 공개적인 검토는 취약점의 식별과 패치로 이어져 보안 향상을 가져올 수 있습니다. 커뮤니티의 집단적 전문 지식을 활용하여 WSL의 발전을 촉진할 수 있습니다.
- 호환성 개선
> 커뮤니티 기여는 호환성 문제를 더 신속하게 해결할 수 있게 해줍니다. 이는 다양한 Linux 배포판과 개발 도구와의 더 나은 통합을 의미합니다.
◎ WSL의 진화 과정 - WSL 1에서 WSL 2로의 전환
> WSL은 2016년 Microsoft Build에서 처음 발표되어 Windows 10 Anniversary Update와 함께 출시되었습니다. 초기 WSL 1은 lxcore.sys라는 호환성 레이어를 사용하여 Linux 시스템 콜을 Windows NT 커널과 통신할 수 있도록 번역했습니다.
> 2019년에는 실제 Linux 커널을 경량 가상 머신에서 실행하는 WSL 2가 출시되어 성능 향상, GPU 지원, systemd 지원, 그리고 그래픽 애플리케이션 실행 능력 등 상당한 개선을 제공했습니다.
- 독립형 패키지로의 분리
> 2021년 마이크로소프트는 WSL을 Windows 코드베이스에서 분리하여 Microsoft Store에서 독립형 패키지로 게시하기로 결정했습니다. 이는 확장되는 커뮤니티와 기능 요청에 대응하기 위해 WSL을 더 빠르게 개발하고 Windows와 별도로 릴리즈할 필요가 있다고 판단했기 때문입니다.
◎ 실무적 활용과 장점 - 향상된 성능: > 파일 시스템 성능 개선: WSL 2에서 파일 시스템 성능이 많이 개선되었는데, WSL 2.6에서는 리눅스와 Windows 간 파일 시스템 접근 속도가 더욱 빨라졌습니다. 특히, Windows에서 리눅스 파일 시스템에 접근하는 속도와, 그 반대의 속도가 개선되었습니다. > 메모리 관리 향상: WSL 2의 메모리 관리가 더 효율적이게 되어, 리소스 사용을 최소화하면서 더 많은 작업을 동시에 처리할 수 있게 되었습니다.
- 더 나은 통합: > Linux GUI 애플리케이션 지원 강화: WSL 2.6에서 리눅스 GUI 애플리케이션을 Windows에서 실행하는 경험이 더욱 매끄럽고 효율적으로 바뀌었습니다. 특히 X 서버를 별도로 설치할 필요 없이, Windows에서 직접 GUI 애플리케이션을 실행할 수 있는 기능이 강화되었습니다. > WSLg (WSL GUI) 업데이트: Windows에서 리눅스 GUI 애플리케이션을 네이티브처럼 실행할 수 있도록 돕는 기능이 더 좋아졌습니다.
- 네트워크 성능 및 안정성 개선: > IP 주소 충돌 문제 개선: WSL 2와 호스트 시스템(Windows) 간 네트워크 충돌이 발생하는 경우가 있었는데, 이러한 충돌을 줄여 안정성을 높였습니다. > 향상된 네트워크 성능: 네트워크 성능도 크게 향상되었으며, 특히 Docker와 같은 컨테이너화된 애플리케이션을 사용할 때 네트워크 대역폭을 더 잘 활용할 수 있게 되었습니다.
- 통합 개발 도구 개선: > VS Code와의 통합 강화: WSL 2.6에서는 Visual Studio Code와의 통합이 더 강력해져, Windows와 리눅스 환경 간의 개발 작업이 더 원활해졌습니다. > 새로운 디버깅 기능: 리눅스 환경에서 개발할 때, 디버깅 기능이 더 좋아졌습니다. 다양한 개발 도구와 디버거를 Windows와 리눅스 간에 원활하게 사용할 수 있게 되었죠.
- 기타 변경 사항: > 파일 시스템 접근 방식 개선: Windows와 리눅스 파일 시스템 간의 상호작용이 더욱 유연하고 효율적으로 변경되었습니다. > 더 많은 배포판 지원: 추가적인 리눅스 배포판을 WSL에서 사용할 수 있도록 지원이 강화되었습니다.
◎ 향후 전망 - 커뮤니티 주도 개발 > 마이크로소프트는 "WSL은 커뮤니티 없이는 오늘날의 모습이 될 수 없었다"고 강조하며, 소스 코드에 접근할 수 없는 상황에서도 사람들이 WSL의 현재로 이어지는 큰 기여를 해왔다고 인정했습니다. 이제 커뮤니티가 프로젝트에 직접 코드 기여를 할 수 있게 되어 WSL의 발전이 더욱 가속화될 것으로 예상됩니다.
- 혁신과 기능 확장 > 오픈소스화를 통해 다양한 관점에서의 혁신적인 솔루션과 개선사항이 나올 것으로 기대됩니다. 개발자들은 이제 WSL의 내부를 탐색하고, 개선사항을 제안하며, 기능을 직접 기여할 수 있게 되었습니다.
◎ 결론 - WSL 2.6.0의 오픈소스 릴리즈는 단순한 버전 업데이트를 넘어 WSL 생태계의 근본적인 변화를 의미합니다. 마이크로소프트의 이러한 결정은 개발자 친화적인 플랫폼으로서 Windows의 진화에서 중요한 이정표가 되며, 커뮤니티 주도 개발의 새로운 시대를 열어가고 있습니다.
- 앞으로 WSL은 커뮤니티의 참여를 통해 더욱 강력하고 유연한 도구로 발전할 것이며, Windows와 Linux 환경 사이의 다리 역할을 더욱 효과적으로 수행할 것으로 전망됩니다. 개발자들에게는 이제 WSL의 미래를 직접 만들어갈 수 있는 기회가 주어진 셈입니다.
저전력 CPU 태블릿을 사용 중인데, 별도 전원으로 사용하는 도킹 외장하드(SKY 16T 듀얼독)를 연결하면 1분도 안지났는데 절전모드가 동작해서 답답하다보니 SKY 16T 듀얼독 펌웨어로 unsleep 모드를 적용도 해보고, 레지스트리도 변경해봤지만 해결이 안되더군요.
결국은 윈도우 자체 USB 대용량 저장 장치 전원관리 설정을 변경해서 해결했습니다.
[설정변경방법]
1) 장치관리자 실행(4가지 방법)
1-1) 윈도우 탐색기 실행 - 내 PC에서 마우스 오른쪽 클릭 후 속성 선택 - 화면 오른쪽 장치관리자 클릭
1-2) 또는 윈도우 시작에서 마우스 왼쪽 클릭 후 설정 선택 - 시스템 - 정보(최하단) 선택
또는 윈도우 시작에서 마우스 오른쪽 클릭 후 설정 선택 - 시스템 -정보(최하단) 선택
1-4) 또는 윈도우키 + R 화면에서 devmgmt.msc 실행
2) 장치관리자 - 보기(V) - 연결별 디바이스(V) 선택
> ACPI x64 기반 PC > Microsoft ACPI-Compliant System > PCI Express 루트 복함 > Intel(R) USB 3.0 확장 가능한 호스트 컨드롤러 - 1.0(Microsoft) > 일반 SuperSpeed USB 허브 > USB 대용량 저장 장치 마우스 오른쪽 속성 클릭
전원관리 탭에서 전원을 절약하기 위해 컴퓨터가 이 장치를 끌 수 있음 체크 해제 후 확인 클릭
# Home 에디션 차단 if ($osName -match "Home" -or $editionId -match "Core") { Write-Host "`n=================================================" -ForegroundColor Red Write-Host " [차단] 현재 시스템은 $osName 에디션입니다." Write-Host " RDP 서버 기능은 Pro / Enterprise에서만 지원됩니다." Write-Host "=================================================" -ForegroundColor Red Read-Host " 엔터를 누르면 종료합니다." exit }
# --- [함수: RDP 보안 제어] --- function Set-RDP { param([string]$Action)
switch ($Action) { "On" { Write-Host "`n[작업] 원격 데스크톱(RDP) 기능을 활성화합니다..." -ForegroundColor Cyan Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 0 Enable-NetFirewallRule -DisplayGroup "@FirewallAPI.dll,-28752" -ErrorAction SilentlyContinue # 원격 데스크톱 규칙 # NLA 강제 설정 (V2.5 기준 유지) Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' -Name "UserAuthentication" -Value 1
Write-Host "[알림] 설정 적용을 위해 서비스를 재시작합니다..." -ForegroundColor Gray Restart-Service -Name TermService -Force Write-Host "[완료] RDP 기능이 켜졌습니다. (NLA 보안 적용)" -ForegroundColor Green }
"SecurePort" { Write-Host "`n[보안강화] RDP 포트 변경을 시작합니다..." -ForegroundColor Cyan $regPath = 'HKLM:\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp' $currentPort = (Get-ItemProperty -Path $regPath).PortNumber Write-Host " 현재 설정된 포트: $currentPort" -ForegroundColor Gray
$newPort = Read-Host " 변경할 포트 번호 입력 (예: 33890)" if (-not $newPort) { Write-Host " 취소되었습니다."; return }
# 2. 방화벽 설정 업데이트 Write-Host "[방화벽] 기존 사용자 지정 규칙 정리 및 $newPort 포트 등록 중..." -ForegroundColor Yellow Remove-NetFirewallRule -DisplayName "RDP_Custom_Port" -ErrorAction SilentlyContinue New-NetFirewallRule -DisplayName "RDP_Custom_Port" -Direction Inbound -Action Allow -Protocol TCP -LocalPort $newPort | Out-Null
# 3. 서비스 즉시 재시작 (V2.5에 추가된 로직) Write-Host "[서비스] 변경된 포트를 즉시 적용하기 위해 RDP 서비스를 재시작합니다..." -ForegroundColor Cyan Write-Host " (원격 접속 중인 경우 연결이 일시적으로 끊어집니다.)" -ForegroundColor Yellow Restart-Service -Name TermService -Force
Write-Host "`n[완료] 포트가 $newPort (으)로 변경 및 즉시 적용되었습니다." -ForegroundColor Green }
"Off" { Write-Host "`n[작업] 원격 데스크톱 기능을 비활성화합니다..." -ForegroundColor Yellow Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -Name "fDenyTSConnections" -Value 1 Restart-Service -Name TermService -Force Write-Host "[완료] RDP 기능이 꺼졌습니다." -ForegroundColor Green } } Read-Host "`n엔터를 누르면 메뉴로 돌아갑니다." }
# --- [메인 메뉴] --- while ($true) { Clear-Host Write-Host "=================================================" -ForegroundColor White Write-Host " 원격 데스크톱(RDP) 보안 관리 도구 " -ForegroundColor Cyan Write-Host "=================================================" Write-Host " [OS 정보] $osName ($editionId)" -ForegroundColor Yellow Write-Host " [빌드번호] $buildNumber" -ForegroundColor Gray Write-Host "-------------------------------------------------" Write-Host " 1. [켜기] 원격 데스크톱 활성화 (NLA 적용)" Write-Host " 2. [보안강화] RDP 포트 변경 및 즉시 적용" -ForegroundColor Green Write-Host " 3. [끄기] 원격 데스크톱 비활성화" -ForegroundColor Yellow Write-Host " 4. [재부팅] 시스템 즉시 재부팅" -ForegroundColor Red Write-Host " 0. 종료" Write-Host "=================================================" $sel = Read-Host "선택" switch ($sel) { "1" { Set-RDP -Action "On" } "2" { Set-RDP -Action "SecurePort" } "3" { Set-RDP -Action "Off" } "4" { Restart-Computer } "0" { exit } } }
- powershell을 실행하고 파일이 만들어진 폴더로 이동하고 아래 명령어를 실행합니다.
- 아래 내용을 Notepad에 붙여넣기하고 인코딩을UTF-8 with BOM으로 변경하고 저장합니다.
※ 사용자 폴더내 파일을 생성하면 안됩니다. C드라이브 하위에 별도 폴더를 생성해서 파일을 저장해주세요.
# [1. 즉시 관리자 권한 확인 및 상승] if (-not ([Security.Principal.WindowsPrincipal][Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)) { Write-Host "`n관리자 권한이 필요합니다. 승인 팝업을 확인해주세요..." -ForegroundColor Yellow try { Start-Process powershell.exe "-NoProfile -ExecutionPolicy Bypass -File `"$PSCommandPath`"" -Verb RunAs } catch { Write-Host "`n[오류] 권한 승격에 실패했습니다." -ForegroundColor Red Read-Host "엔터를 누르면 종료합니다." } exit }
# --- 관리자 권한 실행 영역 ---
# [재부팅 공통 함수] function Invoke-SmartReboot { Write-Host "`n========================================" -ForegroundColor Magenta Write-Host "작업이 완료되었습니다. 시스템을 재부팅해야 합니다." -ForegroundColor Yellow Read-Host "엔터(Enter)를 누르면 즉시 재부팅합니다 (취소하려면 창을 닫으세요)" Restart-Computer -Force }
# [기능 1] 최고 관리자 활성화 function Enable-Admin { Write-Host "`n[1. 최고 관리자(Administrator) 활성화]" -ForegroundColor Cyan net user Administrator /active:yes Write-Host "Administrator 계정이 활성화되었습니다." -ForegroundColor Green Invoke-SmartReboot }
# [기능 3] 최고 관리자 비활성화 function Disable-Admin { Write-Host "`n[3. 최고 관리자(Administrator) 비활성화]" -ForegroundColor Cyan net user Administrator /active:no Write-Host "Administrator 계정이 비활성화되었습니다." -ForegroundColor Green Invoke-SmartReboot }
# [기능 2] 사용자 계정 및 폴더명 변경 (시스템 계정 필터링 강화) function Do-RenameUser { Write-Host "`n[2. 사용자 계정 및 폴더명 변경]" -ForegroundColor Cyan
# 제외할 시스템 계정 목록 정의 $excludeNames = @("Administrator", "Guest", "DefaultAccount", "WDAGUtilityAccount")
# 1. 사용자 목록 가져오기 (시스템 계정 제외) $userList = Get-LocalUser | Where-Object { $excludeNames -notcontains $_.Name }
if ($userList.Count -eq 0) { Write-Host "변경 가능한 일반 사용자 계정이 없습니다." -ForegroundColor Red Read-Host "엔터를 눌러 메뉴로 돌아갑니다." return }
# 현재 로그인 여부 확인 if ($oldName -eq $env:USERNAME) { Write-Host "`n[오류] 현재 로그인된 계정($oldName)은 직접 변경할 수 없습니다!" -ForegroundColor Red Write-Host "최고 관리자(Administrator) 계정으로 로그인한 상태에서 실행해야 폴더명 변경이 가능합니다." -ForegroundColor Yellow Read-Host "엔터를 눌러 메뉴로 돌아갑니다." return }
$newName = Read-Host "`n'$oldName' 계정을 어떤 이름으로 바꿀까요? (공백 없이 영문 권장)" if ([string]::IsNullOrWhiteSpace($newName)) { return }
# 작업 시작 Write-Host "`n단계 1: 사용자 계정 이름 변경 중..." -ForegroundColor Cyan try { Rename-LocalUser -Name $oldName -NewName $newName -ErrorAction Stop Write-Host "성공: 계정 이름이 $newName 으로 변경되었습니다." -ForegroundColor Green } catch { Write-Host "실패: 계정 이름을 변경하지 못했습니다 ($($_.Exception.Message))" -ForegroundColor Red Read-Host "엔터를 눌러 메뉴로 돌아갑니다." return }
Write-Host "단계 3: 실제 C:\Users 폴더 이름 변경 중..." -ForegroundColor Cyan if ($foundPath -and (Test-Path $foundPath)) { try { Rename-Item -Path $foundPath -NewName $newName -ErrorAction Stop Write-Host "성공: 실제 폴더 경로가 변경되었습니다." -ForegroundColor Green } catch { Write-Host "`n[주의] 실제 폴더가 아직 사용 중이라 이름을 바꾸지 못했습니다." -ForegroundColor Red Write-Host "레지스트리는 수정되었으므로, 재부팅 후 직접 C:\Users\$oldName 폴더를 $newName 으로 변경해 주세요." -ForegroundColor Yellow } } else { Write-Host "이미 폴더가 변경되었거나 경로를 찾을 수 없어 건너뜁니다." -ForegroundColor Gray }
Invoke-SmartReboot }
# [메인 루프] while ($true) { Clear-Host Write-Host "========================================" Write-Host " 계정/폴더명 변경 도구 (V2.2) " Write-Host " * 필터링된 사용자 목록 모드 * " -ForegroundColor Green Write-Host "========================================" Write-Host " 1. Administrator 계정 활성화 후 재부팅" Write-Host " 2. 변경할 계정 선택 및 이름 변경 후 재부팅" Write-Host " 3. Administrator 계정 비활성화 후 재부팅" Write-Host " 4. 종료" Write-Host "========================================" $choice = Read-Host "선택"
2015년 이그나이트 컨퍼런스에서 마이크로소프트의 직원 제리 닉슨은 윈도우 10이 "마지막 버전의 윈도우"가 될 것이라고 말했는데, 마이크로소프트에서 2021년 6월에 윈도우(Windows) 11 프리뷰 버전을 배포하였고, 2021년 10월 5일 한국시간 16시에 Windows 11 정식 버전이 출시되었습니다. 마이크로소프트의 수명주기 페이지에 따르면, 기존까지는 윈도우 10의 특정 버전에 대한 지원 종료 기간만 명시되어 있었으나, 공식적으로 윈도우 10 전체 제품군에 대한 지원 종료 기간이 2025년 10월 14일까지로 밝혀졌습니다. 윈도우 11은 윈도우 10 사용자라면 업데이트를 통해 무료 이용이 가능 하지만 업데이트나 클린설치 전 시스템 요구 사항을 확인해야 하며, PC 상태 검사 앱으로 자신의 PC가 지원 대상인지를 확인할 수 있습니다. 혹시나 미지원 CPU 사용자라고 하더라도 TPM 1.2만 지원하면 ISO 이미지를 통한 클린 설치는 막지 않기 때문에 ISO를 다운로드하여 USB에 담아 클린 설치로 이용이 가능합니다. 기존에 알려졌던 아마존 앱스토어 안드로이드 앱은 아직까지 사용할 수 없으며, 안드로이드 앱 사용 시점 역시 구체적으로 확정되지 않은 것으로 알려졌습니다.
[시스템 최소 사양] 윈도우 10 버전 20H1 (2004) 이상 인텔 8세대 또는 라이젠 2세대 이상(SSE4.1, 하이퍼바이저 지원). TPM 1.2 이상 다이렉트X 12 지원 4GB 이상의 RAM 필요 2개 이상의 코어가 장착된 1GHz 이상의 호환되는 64비트 프로세서 또는 SoC(System on a Chip). (원도우 역사상 최초의 32버전 미출시)
[에디션] 윈도우 11 홈 윈도우 11 프로 윈도우 11 프로 for 워크스테이션 윈도우 11 엔터프라이즈 윈도우 11 에듀케이션 윈도우 11 프로 에듀케이션
[이전 버전과 차이점] 인터넷 익스플로러가 없어짐 앱의 모서리가 macOS 스타일로 둥글어짐.(전체 화면 실행 시 뾰족해짐) 작업 표시줄의 아이콘이 기본적으로 가운데로 옮겨짐(설정에서 위치를 왼쪽으로 변경 가능). 메모장, 그림판, 설정, 파일 탐색기 프로그램의 아이콘이 변경됨 마이크로소프트 스토어가 새롭게 바뀌었음 설치 시 레거시 BIOS가 아닌 UEFI가 필요하고, TPM 1.2 보안 모듈이 필요 시작 메뉴가 달라짐 32비트를 지원하지 않고, 64비트만 지원 그림판 프로그램이 새롭게 바뀜 등