Microsoft MVP성태의 닷넷 이야기
Windows: 240. RDP 환경에서 바뀌는 %TEMP% 디렉터리 경로 [링크 복사], [링크+제목 복사],
조회: 12470
글쓴 사람
정성태 (techsharer at outlook.com)
홈페이지
첨부 파일
 

RDP 환경에서 바뀌는 %TEMP% 디렉터리 경로

gpedit.msc에는 다음과 같은 설정이 있습니다.

경로: Administrative Templates\Windows Components\Remote Desktop Services\Remote Desktop Session Host\Temporary folders 
이름: Do not use temporary folders per session

해당 값은 레지스트리로 다음의 경로에 반영되는데요,

레지스트리 경로: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Terminal Server
이름: PerSessionTempDir
타입: REG_DWORD
값: 0x1 Enabled, 0x0 Disabled (Default: 0x1 Enabled)

기본값이 "Not configured"로, enabled 상태와 같습니다. 한데, gpedit.msc에서 해당 옵션 설명을 보면 약간 다르긴 합니다.

If you disable this policy setting, per-session temporary folders are always created, even if the server administrator specifies otherwise.

If you do not configure this policy setting, per-session temporary folders are created unless the server administrator specifies otherwise.

서버 관리자가 사용자의 %TEMP% 디렉터리를 설정했느냐의 유무에 따라 달라진다는 것인데, 테스트는 생략합니다. ^^

어쨌든, 기본 상태에서는 RDP로 원격 컴퓨터에 접속한 경우 탐색기의 경로 창에 직접 %TEMP%를 풀이해 보면,

path_session_temp_1.png

다음과 같은 식으로 숫자가 하나 붙는 경로가 나오게 됩니다.

C:\Users\TESTUSR\AppData\Local\Temp\2

그런데 UAC에 따라 %TEMP% 경로가 달라진다는 점을 유의해야 합니다. 가령 일반 사용자 권한으로 띄운 cmd.exe의 경우 echo로 확인하면,

C:\> echo %TEMP%
C:\Users\TESTUSR\AppData\Local\Temp\2

탐색기에서와 동일한 값이 나오지만, cmd.exe를 관리자 권한으로 띄우면 세션 번호가 붙지 않은 경로가 나옵니다.

C:\> echo %TEMP%
C:\Users\TESTUSR\AppData\Local\Temp

재미있는 건, 해당 숫자는 로그아웃/로그인을 할 때마다 증가한다는 점입니다. 사실 무조건 증가한다기보다는 RDP 접속했을 때의 Session ID를 따른다고 보는 것이 맞습니다. 일례로 아래와 같이 출력되는 경우,

C:\> query session
 SESSIONNAME       USERNAME                 ID  STATE   TYPE        DEVICE
 services                                    0  Disc
 console                                     1  Conn
>rdp-tcp#0         TestUsr                   6  Active
 31c6de94259d4...                        65536  Listen
 rdp-tcp                                 65537  Listen

%TEMP% 디렉터리는 "6"이 붙게 됩니다. 참고로, 이러한 ID는 RDP 접속이 아니더라도, 즉 로컬에서 로그아웃/로그인을 해도 증가합니다. 가령, 위의 화면에서는 "console"의 "ID"가 1인데요, 로그아웃/로그인을 하면 2가 될 것입니다. (콘솔의 경우에는 ID는 증가해도 그것이 %TEMP% 디렉터리에 반영되지는 않습니다.)

이러한 세션 ID 증가는 컴퓨터를 재부팅하면 초기화됩니다.




오래된 oldnewthing의 글을 보면,

Why does the name of my TEMP directory keep changing?
; https://devblogs.microsoft.com/oldnewthing/20110125-00/?p=11673

당시에는 그룹 정책의 경로가 이랬다고 합니다. (하지만 레지스트리 경로는 바뀌지 않았습니다.)

경로: Administrative Templates\Windows Components\Terminal Services\Temporary folders 
이름: Do not use temporary folders per session

저 글을 보면 RDP 접속 환경이라는 단어가 없는데, 그렇다면 콘솔 로그인 된 사용자에 대해서도 %TEMP% 경로에 숫자가 적용됐다는 걸로 풀이가 됩니다. Group Policy에 보면 저 옵션을 Windows Server 2003부터 제공한 것으로 나오는데, 혹시 저 (이제는 의미 없는) 테스트를 해보실 2003 서버 소유자가 있으실까요? ^^




[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]







[최초 등록일: ]
[최종 수정일: 3/30/2023]

Creative Commons License
이 저작물은 크리에이티브 커먼즈 코리아 저작자표시-비영리-변경금지 2.0 대한민국 라이센스에 따라 이용하실 수 있습니다.
by SeongTae Jeong, mailto:techsharer at outlook.com

비밀번호

댓글 작성자
 




... 76  77  78  79  80  81  82  83  84  85  86  87  88  89  [90]  ...
NoWriterDateCnt.TitleFile(s)
11685정성태9/6/201818554사물인터넷: 40. 이어폰 소리를 capacitor로 필터링파일 다운로드1
11684정성태9/6/201821157개발 환경 구성: 396. pagefile.sys를 비활성화시켰는데도 working set 메모리가 줄어드는 이유파일 다운로드1
11683정성태9/5/201818799개발 환경 구성: 395. Azure Web App의 이벤트 로그를 확인하는 방법
11682정성태9/5/201817777오류 유형: 484. Fakes를 포함한 단위 테스트 프로젝트를 빌드 시 CS1729 관련 오류 발생
11681정성태9/5/201820460Windows: 149. 다른 컴퓨터의 윈도우 이벤트 로그를 구독하는 방법 [2]
11680정성태9/2/201822650Graphics: 21. shader - _Time 내장 변수를 이용한 UV 변동 효과파일 다운로드1
11679정성태8/30/201820655.NET Framework: 792. C# COM 서버가 제공하는 COM 이벤트를 C++에서 받는 방법 [1]파일 다운로드1
11678정성태8/29/201819082오류 유형: 483. 닷넷 - System.InvalidProgramException [1]
11677정성태8/29/201816791오류 유형: 482. TFS - Could not find a part of the path '...\packages\Microsoft.AspNet.WebApi.5.2.5\.signature.p7s'.
11676정성태8/29/201827634.NET Framework: 791. C# - ElasticSearch를 위한 Client 라이브러리 제작 [1]파일 다운로드1
11675정성태8/29/201817812오류 유형: 481. The located assembly's manifest definition does not match the assembly reference.
11674정성태8/29/201819779Phone: 12. Xamarin - 기존 리모컨 기능을 핸드폰의 적외선 송신으로 구현파일 다운로드1
11673정성태8/28/201817080오류 유형: 480. Fritzing 실행 시 Ordinal Not Found 오류
11672정성태8/28/201817502오류 유형: 479. 윈도우 - 시스템 설정에서 도메인 참가를 위한 "Change" 버튼이 비활성화된 경우
11671정성태8/28/201823861사물인터넷: 39. 아두이노에서 적외선 송신기 기본 사용법파일 다운로드1
11670정성태8/28/201822103사물인터넷: 38. 아두이노에서 적외선 수신기 기본 사용법 [1]파일 다운로드1
11669정성태8/24/201820904개발 환경 구성: 394. 윈도우 환경에서 elasticsearch의 한글 블로그 검색 인덱스 구성
11668정성태8/24/201831958오류 유형: 478. 윈도우 업데이트(KB4458842) 이후 SQL Server 서비스 시작 오류
11667정성태8/24/201818690오류 유형: 477. "Use Unicode UTF-8 for worldwide language support" 옵션 설정 시 SQL Server 2016 설치 오류 [1]
11666정성태8/22/201818579사물인터넷: 37. 아두이노 - 코딩으로 대신하는 오실레이터 회로의 소리 출력파일 다운로드1
11665정성태8/22/201821278사물인터넷: 36. 오실레이터 회로 동작을 아두이노의 코딩으로 구현하는 방법파일 다운로드1
11664정성태8/22/201820917개발 환경 구성: 393. 윈도우 환경에서 elasticsearch의 한글 형태소 분석기 설치 [1]
11663정성태8/22/201823663개발 환경 구성: 392. 윈도우 환경에서 curl.exe를 이용한 elasticsearch 6.x 기본 사용법
11662정성태8/21/201817286사물인터넷: 35. 병렬 회로에서의 커패시터파일 다운로드1
11661정성태8/21/201819570사물인터넷: 34. 트랜지스터 동작 - 컬렉터-이미터 간의 저항 측정파일 다운로드1
11660정성태8/19/201818667사물인터넷: 33. 세라믹 커패시터의 동작 방식파일 다운로드1
... 76  77  78  79  80  81  82  83  84  85  86  87  88  89  [90]  ...