사용자 도구

사이트 도구


kb:windowsregistryreference

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

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은 기본적으로 이 항목을 레지스트리에다 생성하지 않으므로 직접 생성해줘야한다.
 +
 +
  
kb/windowsregistryreference.txt · 마지막으로 수정됨: 2014/11/09 21:36 (바깥 편집)