사용자 도구

사이트 도구


kb:windowsregistryreference

Windows Registry Reference

레지스트리 관련 팁

영문 폰트 -> 한글 폰트 매핑 순서 지정하기

폰트 파일 안에 표시하려는 글자가 없는 경우, 시스템이 알아서 해당 글자가 있는 폰트 파일을 찾게 된다. 레지스트리를 이용해 폰트 찾는 순서를 정해줄 수 있다.

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink

이 안에다 영문 폰트 이름으로 다중 문자열 값을 만들고, “폰트파일이름,폰트이름” 형식으로 문자열을 입력해 주면 된다. 예를 들면 다음과 같다.

malgun.ttf,MalGun
gulim.ttc,gulim
MSGOTHIC.TTC,MS UI Gothic
SimSun.TTC,SimSun
mingliu.ttc,PMingLiU

수정 후, 리부팅해야 적용된다.

Courier New에는 맑은 고딕이 어울린다. :) Consolas에 맑은 고딕 지정하니 위아래로 눌린 것처럼 나오네 그려, 왜 이렇지? 회사에서 사용하는 컴퓨터에서는 또 반대네. 뭐냐. 윈도우즈가 문제냐, scite가 문제냐? ㅠㅠ

방화벽 예외에 프로그램 추가하기

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List

위 두 가지 키 안에다가 다음과 같은 형식의 문자열을 추가한다.

"C:\\Project\\Binary\\Sbin\\DataServerDebug.exe"="C:\\Project\\Binary\\Sbin\\DataServerDebug.exe:*:Enabled:DataServerDebug.exe"

레지스트리 등록 항목 파일(.REG) 파일로서 만들자면 다음과 같다.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"C:\\Project\\Binary\\Sbin\\DataServerDebug.exe"="C:\\Project\\Binary\\Sbin\\DataServerDebug.exe:*:Enabled:DataServerDebug.exe"

[HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List]
"C:\\Project\\Binary\\Sbin\\DataServerDebug.exe"="C:\\Project\\Binary\\Sbin\\DataServerDebug.exe:*:Enabled:DataServerDebug.exe"

이벤트 로그 등록정보 설정하기

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\logfile

기본적으로 세가지(Application,Security,System)의 로그가 존재하며, 각각 다음과 같은 필드를 가진다.

  • File은 REG_EXPAND_SZ 타입의 값으로서, 로그 파일이 존재하는 패스를 나타낸다.
  • Max``Size는 REG_DWORD 타입의 값으로서, 로그 파일의 최대 크기를 바이트 단위로 나타낸다. 기본값은 512K(524288) 바이트이다.
  • Retention은 REG_DWORD 타입의 값으로서, 로그를 보관할 기간을 초 단위로 나타낸 값이다. 이 값이 0인 경우, 자리가 모자라면 즉시 가장 오래된 로그 항목을 덮어쓰게 된다. 이 값이 0xFFFFFFFF일 경우, 로그를 무한히 보관하게 된다. 즉 로그 파일의 크기가 최대 사이즈가 되면, 수동으로 로그를 비워주지 않는 한, 더 이상 새로운 로그가 기록되지 않는다. 이 값은 기본적으로 604800초(7일)이다.
  • Sources는 REG_MULTI_SZ 타입의 값으로서, 해당하는 로그 파일에 기록을 허가받은 프로그램들의 목록이다.

Run/RunOnce Registry Keys

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run

이 키 안에 있는 명령들은 컴퓨터가 부팅될 때마다 모든 사용자를 위해 실행된다. (The command in this key is executed every time the computer is booted for all users.)

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run

이 키 안에 있는 명령들은 컴퓨터가 부팅될 때마다 특정 사용자를 위해 실행된다. (The command in this key is executed each time the computer is booted, but only for the user profile it was installed for.)

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce

이 키 안에 있는 명령들은 다음 부팅시, 로그온하는 사람과는 상관없이, 단 한번만 실행된다. (The command in this key is executed only one time no matter how many different people log onto the computer. When the command has completed, it is never executed again.)

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce

이 키 안에 있는 명령들은 다음 부팅시, 특정 사용자를 위해서 단 한번만 실행된다. (The command in this key is executed each time a new user logs onto the computer. When the command has completed, it is never executed again for that specific user.)

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices

이 키 안에 있는 명령들은 컴퓨터가 부팅될 때마다, 백그라운드 프로세스로 실행된다. (The command in this key is executed as a background process when the logon dialog box appears. It runs every time the computer is booted.)

HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce

이 키 안에 있는 명령들은 다음 부팅시, 단 한번만 백그라운드 프로세스로 실행된다. (The command in this key is executed as a background process when the logon dialog box appears. It runs only once.)

:!: Run Once 계열의 명령들은 실행 도중 뭔가 에러가 생겨 실패해도, OS가 실행한 것으로 간주한다. 즉 다시 실행하지 않는다는 말이다. (If a command fails during its Run Once procedure, the operating system still marks the file as having been run. Even if it fails, it will not execute again.)

최대 소켓연결 숫자 늘리기

Windows 2000에서는 아래의 레지스트리 값을 변경해주지 않으면, 생각보다 적은 숫자의 연결 밖에 받아들이지 못한다.

MaxFreeTcbs

위치 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

데이터 타입 범위 기본값
REG_DWORD 0x0 ~ 0xFFFFFFFF (연결수) 메모리와 OS에 따라 다름

시스템이 TCP 연결 유지를 위해 생성하는 TCP Control Blocks(TCBs)의 숫자를 결정한다. 하나의 연결은 하나의 블록을 요구하기 때문에, 이 값은 TCP가 동시에 몇 개의 연결을 처리할 수 있느냐를 결정하게 된다. 모든 블록이 사용 중인 상황에서 새로운 연결이 들어오게 되면, TCP는 TIME_WAIT 상태인 연결 중에 하나를 강제로 끊어버리고, 블록을 해제한 후, 그 블록을 새로운 연결에 사용하게 된다.

보통 TCP는 TcpTimedWaitDelay에 지정되어 있는 시간이 지나지 않은 경우, 연결을 해제하지도 않고, 그 연결에 사용된 자원을 재사용하지도 않는다. 이 시간은 보통 TIME_WAIT 또는 2MSL (2 x maximum segment lifetime) 상태라고 불린다. 하지만 시스템이 매우 많은 연결을 받아들여 자원이 바닥날 상황에 이르면, TcpTimedWaitDelay에 지정된 시간이 아직 남아있는 경우에도 연결에 할당되어 있는 자원을 해제하게 된다.

이 항목의 기본 값은 시스템의 물리적 메모리 크기와 OS 버전에 따라 달라진다. 그 값들은 다음과 같다.

메모리 크기 Windows 2000 Server Windows 2000 Professional
19MB 미만 500 250
19MB ~ 63 MB 1,000 500
64MB 이상 2,000 1,000

:!: Windows 2000은 기본적으로 이 항목을 레지스트리에다 생성하지 않으므로 직접 생성해줘야한다.

MaxHashTableSize

위치 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

데이터 타입 범위 기본값
REG_DWORD 64 ~ 65,536 (테이블 항목수) 512

TCP Control block이 저장되는 해쉬 테이블의 크기를 결정한다.

TCP는 컨트롤 블록들을 빠르게 검색하기 위해 해쉬 테이블에다 저장한다. 만일 시스템이 동시에 생성할 수 있는 TCB의 숫자를 변경한다면(MaxFreeTcbs 값을 변경한다면), 이 항목의 값 또한 그에 비례해서 변경해줘야한다.

이 항목의 값은 반드시 2의 승수여야한다. 만일 2의 승수를 입력하지 않는다면, 시스템은 자동으로 입력한 수보다 큰 2의 승수 중에 가장 작은 것을 찾아 사용한다.

:!: Windows 2000은 기본적으로 이 항목을 레지스트리에다 생성하지 않으므로 직접 생성해줘야한다.

MaxUserPort

위치 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

데이터 타입 범위 기본값
REG_DWORD 5,000 ~ 65,534 (포트 번호) 5000

bind()를 명시적으로 호출하지 않는 경우(connect 등을 호출했을 때), 시스템이 자동으로 할당하는 포트 번호의 최대값을 결정한다. 보통 이런 포트 번호는 1024에서 5000 사이의 값이다.

:!: Windows 2000은 기본적으로 이 항목을 레지스트리에다 생성하지 않으므로 직접 생성해줘야한다.

TcpTimedWaitDelay

위치 : HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

데이터 타입 범위 기본값
REG_DWORD 0x1E 0x12C (30 ~ 300초) 0xF0 (240초 = 4분)

TCP가 소켓 연결을 해제하고, 할당한 자원을 재사용하기 위해 기다려야할 시간을 결정한다. 소켓 연결을 끊는(close) 시점과 소켓 연결을 해제(release)하는 시점 사이의 간격은 TIME_WAIT 또는 2MSL 상태라고 불린다. 이 시간 동안 클라이언트와 서버가 새로 연결을 만드는 일은, 완전히 새로운 연결을 만드는 것보다 훨씬 적은 시간을 요구한다.

RFC 793은 끊긴(closed) 연결을 적어도 2MSL 시간 동안은 완전히 해제(release)하지 말고 기다릴 것을 요구하고 있다. 연결이 해제되면 그 연결에 할당되어 있던 소켓 쌍(클라이언트 및 서버)과 TCB(TCP control block)을 다른 연결을 위해 사용할 수 있다. 기본적으로 MSL은 120초로 설정되어 있다. 그리고 이 레지스트리 항목의 값은 2MSL, 즉 240초(4분)로 설정되어 있다. 이 값을 변경하면 간격을 조정할 수 있다.

이 항목의 값을 줄이면, TCP는 연결을 더 빨리 해제(release)하고, 할당되어 있던 자원을 새로운 연결을 위해 재사용할 수 있다. 하지만 이 값이 너무 작아지면, 클라이언트와의 연결 해제 작업이 끝나기도 전에 자원을 반환하게 된다. 이 경우, 연결 해제 작업을 계속하기 위해 서버는 또다시 새로운 연결을 할당해야 한다.

보통 TCP는 이 항목에 지정되어 있는 시간이 지나지 않은 경우, 연결을 해제하지도 않고, 그 연결에 사용된 자원을 재사용하지도 않는다. 하지만 시스템이 매우 많은 연결을 받아들여 자원이 바닥날 상황에 이르면, 지정된 시간이 아직 남아있는 경우에도 연결에 할당되어 있는 자원을 해제하게 된다.

:!: Windows 2000은 기본적으로 이 항목을 레지스트리에다 생성하지 않으므로 직접 생성해줘야한다.

kb/windowsregistryreference.txt · 마지막으로 수정됨: 2014/11/09 21:36 (바깥 편집)