Microsoft MVP성태의 닷넷 이야기
Windows: 240. RDP 환경에서 바뀌는 %TEMP% 디렉터리 경로 [링크 복사], [링크+제목 복사],
조회: 16837
글쓴 사람
정성태 (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

비밀번호

댓글 작성자
 




... [106]  107  108  109  110  111  112  113  114  115  116  117  118  119  120  ...
NoWriterDateCnt.TitleFile(s)
11374정성태11/27/201728346사물인터넷: 14. 라즈베리 파이 - (윈도우의 NT 서비스처럼) 부팅 시 시작하는 프로그램 설정 [1]
11373정성태11/27/201727580오류 유형: 433. Raspberry Pi/Windows 다중 플랫폼 지원 컴파일 관련 오류 기록
11372정성태11/25/201729563사물인터넷: 13. 윈도우즈 사용자를 위한 라즈베리 파이 제로 W 모델을 설정하는 방법 [4]
11371정성태11/25/201723285오류 유형: 432. Hyper-V 가상 스위치 생성 시 Failed to connect Ethernet switch port 0x80070002 오류 발생
11370정성태11/25/201723959오류 유형: 431. Hyper-V의 Virtual Switch 생성 시 "External network" 목록에 특정 네트워크 어댑터 항목이 없는 경우
11369정성태11/25/201725310사물인터넷: 12. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드 및 마우스로 쓰는 방법 (절대 좌표, 상대 좌표, 휠) [1]
11368정성태11/25/201730102.NET Framework: 699. UDP 브로드캐스트 주소 255.255.255.255와 192.168.0.255의 차이점과 이를 고려한 C# UDP 서버/클라이언트 예제 [2]파일 다운로드1
11367정성태11/25/201731136개발 환경 구성: 337. 윈도우 운영체제의 route 명령어 사용법
11366정성태11/25/201723329오류 유형: 430. 이벤트 로그 - Cryptographic Services failed while processing the OnIdentity() call in the System Writer Object.
11365정성태11/25/201723698오류 유형: 429. 이벤트 로그 - User Policy could not be updated successfully
11364정성태11/24/201727746사물인터넷: 11. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법 (절대 좌표) [2]
11363정성태11/23/201727943사물인터넷: 10. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법 (두 번째 이야기)
11362정성태11/22/201722469오류 유형: 428. 윈도우 업데이트 KB4048953 - 0x800705b4 [2]
11361정성태11/22/201725485오류 유형: 427. 이벤트 로그 - Filter Manager failed to attach to volume '\Device\HarddiskVolume??' 0xC03A001C
11360정성태11/22/201726704오류 유형: 426. 이벤트 로그 - The kernel power manager has initiated a shutdown transition.
11359정성태11/16/201725490오류 유형: 425. 윈도우 10 Version 1709 (OS Build 16299.64) 업그레이드 시 발생한 문제 2가지
11358정성태11/15/201731306사물인터넷: 9. Visual Studio 2017에서 Raspberry Pi C++ 응용 프로그램 제작 [1]
11357정성태11/15/201731642개발 환경 구성: 336. 윈도우 10 Bash 쉘에서 C++ 컴파일하는 방법
11356정성태11/15/201733423사물인터넷: 8. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스 + 키보드로 쓰는 방법 [4]
11355정성태11/15/201727310사물인터넷: 7. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 마우스로 쓰는 방법 [2]파일 다운로드2
11354정성태11/14/201733174사물인터넷: 6. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 키보드로 쓰는 방법 [8]
11353정성태11/14/201729681사물인터넷: 5. Raspberry Pi Zero(OTG)를 다른 컴퓨터에 연결해 가상 이더넷 카드로 쓰는 방법 [1]
11352정성태11/14/201726565사물인터넷: 4. Samba를 이용해 윈도우와 Raspberry Pi간의 파일 교환 [1]
11351정성태11/7/201728658.NET Framework: 698. C# 컴파일러 대신 직접 구현하는 비동기(async/await) 코드 [6]파일 다운로드1
11350정성태11/1/201725157디버깅 기술: 108. windbg 분석 사례 - Redis 서버로의 호출을 기다리면서 hang 현상 발생
11349정성태10/31/201725965디버깅 기술: 107. windbg - x64 SOS 확장의 !clrstack 명령어가 출력하는 Child SP 값의 의미 [1]파일 다운로드1
... [106]  107  108  109  110  111  112  113  114  115  116  117  118  119  120  ...