문서의 선택한 두 판 사이의 차이를 보여줍니다.
— |
kb:windowsregistryreference [2014/11/09 21:36] (현재) |
||
---|---|---|---|
줄 1: | 줄 1: | ||
+ | ====== Windows Registry Reference ====== | ||
+ | 레지스트리 관련 팁 | ||
+ | |||
+ | ====== 영문 폰트 -> 한글 폰트 매핑 순서 지정하기 ====== | ||
+ | 폰트 파일 안에 표시하려는 글자가 없는 경우, 시스템이 알아서 해당 글자가 있는 폰트 파일을 찾게 된다. 레지스트리를 이용해 폰트 찾는 순서를 정해줄 수 있다. | ||
+ | |||
+ | <code> | ||
+ | HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\FontLink\SystemLink | ||
+ | </code> | ||
+ | |||
+ | 이 안에다 영문 폰트 이름으로 다중 문자열 값을 만들고, "폰트파일이름,폰트이름" 형식으로 문자열을 입력해 주면 된다. 예를 들면 다음과 같다. | ||
+ | <code> | ||
+ | malgun.ttf,MalGun | ||
+ | gulim.ttc,gulim | ||
+ | MSGOTHIC.TTC,MS UI Gothic | ||
+ | SimSun.TTC,SimSun | ||
+ | mingliu.ttc,PMingLiU | ||
+ | </code> | ||
+ | |||
+ | 수정 후, 리부팅해야 적용된다. | ||
+ | |||
+ | Courier New에는 맑은 고딕이 어울린다. :) Consolas에 맑은 고딕 지정하니 위아래로 눌린 것처럼 나오네 그려, 왜 이렇지? 회사에서 사용하는 컴퓨터에서는 또 반대네. 뭐냐. 윈도우즈가 문제냐, scite가 문제냐? ㅠㅠ | ||
+ | |||
+ | |||
+ | ====== 방화벽 예외에 프로그램 추가하기 ====== | ||
+ | <code> | ||
+ | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List | ||
+ | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List | ||
+ | </code> | ||
+ | |||
+ | 위 두 가지 키 안에다가 다음과 같은 형식의 문자열을 추가한다. | ||
+ | |||
+ | <code> | ||
+ | "C:\\Project\\Binary\\Sbin\\DataServerDebug.exe"="C:\\Project\\Binary\\Sbin\\DataServerDebug.exe:*:Enabled:DataServerDebug.exe" | ||
+ | </code> 레지스트리 등록 항목 파일(.REG) 파일로서 만들자면 다음과 같다. | ||
+ | |||
+ | <code> | ||
+ | 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" | ||
+ | </code> | ||
+ | |||
+ | |||
+ | ====== 이벤트 로그 등록정보 설정하기 ====== | ||
+ | <code> | ||
+ | HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\logfile | ||
+ | </code> | ||
+ | |||
+ | 기본적으로 세가지(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 ====== | ||
+ | <code> | ||
+ | HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run | ||
+ | </code> | ||
+ | 이 키 안에 있는 명령들은 컴퓨터가 부팅될 때마다 모든 사용자를 위해 실행된다. | ||
+ | (The command in this key is executed every time the computer is booted for all users.) | ||
+ | |||
+ | <code> | ||
+ | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Run | ||
+ | </code> | ||
+ | 이 키 안에 있는 명령들은 컴퓨터가 부팅될 때마다 특정 사용자를 위해 실행된다. | ||
+ | (The command in this key is executed each time the computer is booted, but only for the user profile it was installed for.) | ||
+ | |||
+ | <code> | ||
+ | HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunOnce | ||
+ | </code> | ||
+ | 이 키 안에 있는 명령들은 다음 부팅시, 로그온하는 사람과는 상관없이, 단 한번만 실행된다. | ||
+ | (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.) | ||
+ | |||
+ | <code> | ||
+ | HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce | ||
+ | </code> | ||
+ | 이 키 안에 있는 명령들은 다음 부팅시, 특정 사용자를 위해서 단 한번만 실행된다. | ||
+ | (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.) | ||
+ | |||
+ | <code> | ||
+ | HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServices | ||
+ | </code> | ||
+ | 이 키 안에 있는 명령들은 컴퓨터가 부팅될 때마다, 백그라운드 프로세스로 실행된다. | ||
+ | (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.) | ||
+ | |||
+ | <code> | ||
+ | HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\RunServicesOnce | ||
+ | </code> | ||
+ | 이 키 안에 있는 명령들은 다음 부팅시, 단 한번만 백그라운드 프로세스로 실행된다. | ||
+ | (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은 기본적으로 이 항목을 레지스트리에다 생성하지 않으므로 직접 생성해줘야한다. | ||
+ | |||
+ | |||