◎ 자동화 스크립트

 - 아래 내용을 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
    }

    Write-Host "변경할 계정을 선택하세요 (시스템 계정 제외됨):" -ForegroundColor Yellow
    for ($i=0; $i -lt $userList.Count; $i++) {
        Write-Host " [$($i + 1)] $($userList[$i].Name)"
    }
    Write-Host " [0] 취소 및 돌아가기"

    $selection = Read-Host "`n번호 선택"
    if ($selection -eq "0" -or [string]::IsNullOrWhiteSpace($selection)) { return }
    
    # 숫자 입력 확인
    if (-not [int]::TryParse($selection, [ref]$num)) {
        Write-Host "숫자만 입력 가능합니다." -ForegroundColor Red
        Start-Sleep -Seconds 1
        return
    }

    $index = $num - 1
    if ($index -lt 0 -or $index -ge $userList.Count) {
        Write-Host "잘못된 번호입니다." -ForegroundColor Red
        Start-Sleep -Seconds 1
        return
    }

    $targetUser = $userList[$index]
    $oldName = $targetUser.Name

    # 현재 로그인 여부 확인
    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 "단계 2: 레지스트리 프로필 경로 수정 중..." -ForegroundColor Cyan
    $profileList = "HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList"
    $foundPath = $null
    Get-ChildItem $profileList | ForEach-Object {
        $val = Get-ItemProperty $_.PSPath
        # ProfileImagePath가 대상 계정 폴더로 끝나는지 확인
        if ($val.ProfileImagePath -like "*\$oldName") {
            $parent = Split-Path $val.ProfileImagePath
            $newPath = Join-Path $parent $newName
            Set-ItemProperty $_.PSPath -Name "ProfileImagePath" -Value $newPath
            $foundPath = $val.ProfileImagePath
        }
    }

    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 "선택"
    
    switch ($choice) {
        "1" { Enable-Admin }
        "2" { Do-RenameUser }
        "3" { Disable-Admin }
        "4" { exit }
        default { Write-Host "잘못된 입력입니다." -ForegroundColor Red; Start-Sleep -Seconds 1 }
    }
}

 

 - powershell을 실행하고 파일이 만들어진 폴더로 이동하고 아래 명령어를 실행합니다.

PS C:\backup> powershell -ExecutionPolicy Bypass -File .\ChangeUser.ps1

 

ChangeUser.ps1
0.01MB

 

[Microsoft 계정 사용 시]
◎ 윈도우키+X를 누르고 설정 클릭
계정 - 사용자 정보 - 계정 설정으로 이동하여
대신 로컬 계정으로 로그인 클릭 후 계정을 생성합니다.

0123

[PIN 로그인에서 암호방식으로 로그인 방식 변경 시]
◎ 윈도우키+X를 누르고 설정 클릭
계정 - 로그인 옵션에서 PIN 제거를 클릭합니다.


[로컬 계정 사용 시]
◎ Administrator 계정 활성화
윈도우키+X를 누르고 Windows 터미널(관리자) 실행
net user Administrator /active:yes 실행

로그아웃 후 Administrator 계정으로 로그인 후

01

아래 작업 진행

[사용자 계정 변경]
◎ 사용자 계정(netplwiz) 실행
윈도우키+R를 누르고 netplwiz 실행


사용자 이름에서 현재 사용자 계정명 더블클릭 후


일반 탭 - 사용자 이름에서 계정명 변경

그룹 등록 탭에서 관리자 확인 후 적용(표준 사용자이면 관리자 선택 후 적용)

 

◎ 로컬 사용자 및 그룹(lusrmgr.msc) 실행
윈도우키+R를 누르고 lusrmgr.msc 실행


로컬 사용자 및 그룹(로컬) - 사용자 클릭 후 오른쪽에서 현재 사용자 계정명 클릭 - 마우스 오른쪽 이름 바꾸기 클릭 후 계정명 변경


사용자 계정에서 더블클릭 후 소속 그룹 탭에서 Administrators 확인


Home 버전은 로컬 사용자 및 그룹(lusrmgr.msc) 없기 때문에 github에서 lusrmgr를 다운로드 받아 실행

[사용자 폴더명 변경]
◎ 레지스트리에서 사용자 폴더명 변경
윈도우키+R를 누르고 regedit 실행


HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList 하위키(Subkey) 목록에서 S-1-5-21-숫자 중 ProfileImagePath 에 현재 사용 중인 폴더 명을 찾습니다.


더블클릭 후 원하는 이름으로 변경합니다.

 

◎ 작업관리자 실행

사용자 탭에서 사용자 계정을 로그오프합니다.


◎ Windows 터미널(관리자) 실행
윈도우키+X를 누르고 Windows 터미널(관리자)

C:\Users 디렉토리로 이동 후
C:\Users> ren "현재 이름" "바꿀이름"


[마무리]
Administrator 로그아웃 후 로컬계정으로 로그인 후
◎ Administrator 계정 비활성화
윈도우키+X를 누르고 Windows 터미널(관리자) 실행
net user Administrator /active:no 실행

 

반응형

+ Recent posts