"๊ด๋ฆฌ์ ๊ถํ์ผ๋ก"ํฐ๋ฏธ๋์ ์คํํ๋ ๋ฐ ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ค๋ฅ : Windows์์ "C : Program FilesWindowsAppsMicrosoft.WindowsTerminal_0.2.1831.0_x64__8wekyb3d8bbweWindowsTerminal.exe"๋ฅผ ์ฐพ์ ์ ์์ต๋๋ค. ์ด๋ฆ์ ์ฌ๋ฐ๋ฅด๊ฒ ์ ๋ ฅํ๋์ง ํ์ธํ ๋ค์ ๋ค์ ์๋ํ์ญ์์ค.
@ DHowett-MSFT ์ด๋๊ฐ์ ์ค๋ณต ๋ฌธ์ ๊ฐ ์๋ค๊ณ ๋งน์ธ ํ ์ ์์์ง๋ง ์ง๊ธ์ ์ฐพ์ ์ ์์ต๋๋ค. ๊ทธ ์์ธ์ ๊ธฐ์ตํ์ญ๋๊น?
Ahh man, ์ค๋ณต ๋ ๊ฒฝ์ฐ ์ฃ์กํฉ๋๋ค.
์ด์ ๊ฐ ์์ต๋๋ค. ์ฑ์ ์ ์์ ์ผ๋ก ์์ํ์ง๋ง ๊ด๋ฆฌ์๊ฐ ์คํจํ๋ฉด r- ํด๋ฆญํ๊ณ ์์ํ๋ฉด Windows UAC์์ ๊ด๋ฆฌ์ ์ํธ๋ฅผ ๋ ๋ฒ ํ๋กฌํํธ ํ ๋ค์ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
ํ์ฌ์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค. ์์
ํ์ ์ค์์ ํฐ๋ฏธ๋์ ๊ฒ์ํ์ต๋๋ค.
๊ทธ๋ฐ ๋ค์ ๊ด๋ฆฌ์ ์๊ฒฉ ์ฆ๋ช ์ ๋ ๋ฒ ์ ๋ ฅํ๋ผ๋ ๋ฉ์์ง๊ฐ ํ์๋์์ต๋๋ค! ํ๋์ ๊ด๋ฆฌ์ ํ๋กฌํํธ. ๊ทธ๋ฐ ๋ค์ ๋ ๋ฒ์งธ๋ก ์๊ฒฉ ์ฆ๋ช ์ ๋ ฅ์ ๋ง์น๋ฉด์ด ์ค๋ฅ ๋ฉ์์ง๊ฐ ๋ํ๋ฉ๋๋ค.
์ค๋ ๋ฐฉ๊ธ ๋จ๋ง๊ธฐ๋ฅผ ์ค์นํ์ต๋๋ค.
ํฐ๋ฏธ๋ ๋ฒ์ :
๋ฒ์ : 0.2.1831.0
OS ๋ฒ์ :
Windows 10 Pro
10.0.18362 ๋น๋ 18362
๋ํ ์์ ํ์ ์ค์์ ๊ด๋ฆฌ์๋ก ์ ์ฒด ํฐ๋ฏธ๋์ ์คํํ๋ ๋์ ์ ์์ผ๋ก ๋์์ด ์์ต๋๊น?
์๋ฅผ ๋ค๋ฉด :
์ ํญ์ ์ด ๋ ์ฌ์ฉ์์๊ฒ ๋ฉ์์ง๋ฅผ ํ์ํ๊ฑฐ๋ ๊ด๋ฆฌ์๋ก ์ ์ธ์คํด์ค๋ฅผ ์ด ๊ฒ์ธ์ง ๋ฌป๋ UI๊ฐ ์์ต๋๊น?
๋๋ ํฐ๋ฏธ๋์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ผ๋ก ํด๋ฆญํ์ฌ ์ ํํ ๋์ผํ ๋๋ ํ ๋ฆฌ์์ ๊ด๋ฆฌ ํญ์ ์ฝ๋ ๋ค. (์ด๊ฒ์ sudo์ ๊ฐ์ ๋ฉ์ง ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ powershell-core์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค)
๊ด๋ฆฌ์ ๋ชจ๋์์ ์คํ๋๋ Windows ํฐ๋ฏธ๋ ์ง์์ ์ข์ ๋์์ด ์๋ ์ ์์ต๋๋ค. ์ฆ, Ctrl + T์์ ์ด๋ฆฐ ๋ค๋ฅธ ํญ์ ๋ชจ๋ ์ ธ์ด ๊ด๋ฆฌ์ ๊ถํ ์ผ ์ ์์ต๋๋ค. ๋ด๊ฐ ์๋ ํ Windows Terminal์ ๊ด๋ฆฌ์์์ ์ ํ๋ ์ฌ์ฉ์์๊ฒ ์ฝ๋๋ฅผ ๊ตฌํํ์ง ์์ต๋๋ค. ์ค์ ๋ก Windows์์๋ ๊ฒ์ sudo์ ๊ฐ์ด UI ์ํธ ์์ฉ์ด ํ์ํ์ง ์์ ๊ถํ ๊ตฌํ์ ๋๋ค.
๊ทธ๋ฌ๋ sudo๋ฅผ ๊ตฌํํ๋ ๊ฒ๋ ๋ฒ๊ฑฐ๋ก์ธ ์ ์์ต๋๋ค. runas ๋์ฌ์ ํ๋ฆ์ ๋๋ต ๋ค์๊ณผ ๊ฐ์ต๋๋ค (์๋ชป๋ ๊ฒ์ด ์์ผ๋ฉด ์๋ ค์ฃผ์ธ์).
PROC_THREAD_ATTRIBUTE_PARENT_PROCESS
๋ก ํธ์ถ๋๊ณ 3 ๋จ๊ณ์์ ๊ฒ์๋ ํธ๋ค์ ์ฌ์ฉํฉ๋๋ค.EXTENDED_STARTUPINFO_PRESENT
๋ฐ 1 ๋จ๊ณ์ 4 ๋จ๊ณ์ ๊ฒฐ๊ณผ๋ก ํธ์ถ๋ฉ๋๋ค.์ฐ๋ฆฌ๋ ๊ฐ๋จํ ๊ฒฐ๋ก ์ ๋ด๋ฆด ์ ์์ต๋๋ค. ์ค์ ๋ก runas
๋ ์ค์ ๋ก ๋์ ๊ถํ์ด์๋ ํ๋ก์ธ์ค์ ๋ํ RPC ์์ฒญ์ ์์ํ๋ ์ ์์ ์ธ ํ๋ก์ธ์ค์
๋๋ค. ๋์ ๊ถํ ํ๋ก์ธ์ค (AppInfo ์๋น์ค)๋ ๊ด๋ฆฌ์ ํ๋ก์ธ์ค๋ฅผ ๋ง๋ค๊ณ ์์ ํ๋ก์ธ์ค๋ฅผ ์ผ๋ฐ ํ๋ก์ธ์ค๋ก ์ค์ ํฉ๋๋ค.
AppInfo๋ ํ์ฌ ๊ด๋ฆฌ์ ํ๋ก์ธ์ค๋ฅผ ์์ํ ๋ ์์ ๋๋ ํฐ๋ฆฌ, ์ ๋ ฅ ๋ฐ ์ถ๋ ฅ (CreateProcessAsUser ํธ์ถ) ์ค์ ์ ์ง์ํ์ง ์์ต๋๋ค. ์ด๊ฒ์ Windows Terminal์์ sudo ์ง์์ ์คํํ๊ธฐ ์ํด ํด๊ฒฐํด์ผํ๋ ๋ฌธ์ ์ ๋๋ค. (ShellExecuteEx SEE_MASK_NO_CONSOLE์ด ์๋ํ์ง ์์)
typedef struct _SHELLEXECUTEINFOW {
DWORD cbSize;
ULONG fMask;
HWND hwnd;
LPCWSTR lpVerb;
LPCWSTR lpFile;
LPCWSTR lpParameters;
LPCWSTR lpDirectory;
int nShow;
HINSTANCE hInstApp;
void *lpIDList;
LPCWSTR lpClass;
HKEY hkeyClass;
DWORD dwHotKey;
union {
HANDLE hIcon;
HANDLE hMonitor;
} DUMMYUNIONNAME;
HANDLE hProcess;
} SHELLEXECUTEINFOW, *LPSHELLEXECUTEINFOW;
| ๊ฐ์น | ์๋ฏธ |
| --- | --- |
| PROC_THREAD_ATTRIBUTE_PARENT_PROCESS | lpValue ๋งค๊ฐ ๋ณ์๋ ์์ฑ๋๋ ํ๋ก์ธ์ค์ ๋ถ๋ชจ๋ก ํธ์ถ ํ๋ก์ธ์ค ๋์ ์ฌ์ฉํ ํ๋ก์ธ์ค์ ๋ํ ํธ๋ค์ ๋ํ ํฌ์ธํฐ์
๋๋ค. ์ฌ์ฉํ ํ๋ก์ธ์ค์๋ PROCESS_CREATE_PROCESS ์ก์ธ์ค ๊ถํ์ด ์์ด์ผํฉ๋๋ค.
์ง์ ๋ ํ๋ก์ธ์ค์์ ์์ ๋ ์์ฑ์๋ ํธ๋ค, ์ฅ์น ๋งต, ํ๋ก์ธ์ ์ ํธ๋, ์ฐ์ ์์, ํ ๋น๋, ํ๋ก์ธ์ค ํ ํฐ ๋ฐ ์์
๊ฐ์ฒด๊ฐ ํฌํจ๋ฉ๋๋ค. (๋๋ฒ๊ทธ ํฌํธ์ ๊ฐ์ ์ผ๋ถ ์์ฑ์์ด ํธ๋ค๋ก ์ง์ ๋ ํ๋ก์ธ์ค๊ฐ ์๋ ์์ฑ ํ๋ก์ธ์ค์์ ์ ๊ณต๋ฉ๋๋ค.) |
์ด๊ฒ์ ํ์คํ Windows ํ๋ซํผ ๋ฌธ์ ์ ๋๋ค. ๋๋ ๊ทธ๊ฒ์ ์์ ํ๊ณ ์๋ ํ์ ํ์ ์กฐ์น๋ฅผ ์ทจํ๊ณ ์ด๊ฒ์ ์ข ๊ฒฐํ๊ธฐ ์ํด ๊ทธ๊ฒ์ ๋ ์์ ์๊ฒ ํ ๋นํ๊ณ ์๋ค. ๊ฐ์ฌ.
์์ค์ปฌ๋ ์ด์ ๋ ๊ถํ์ผ๋ก ํญ์ ์น์ธํ๋ @ YMba9g8j9CJp0wLoQf5y์ ์ ์์ด ๋ง์์ ๋ญ๋๋ค. ์ ๋ ConEmu์์ ๊ด๋ฆฌ์ ๊ถํ์ด ์๊ฑฐ๋์๋ ํญ์ ๋ง๋ค ์ ์์ต๋๋ค. ๊ด๋ฆฌ ํญ์ ๋ง๋ค ๋ UAC๋ฅผ ๋ฌป๋ ๋ฉ์์ง๊ฐ ํ์๋ฉ๋๋ค.
์ด๊ฒ์ Windows ์คํ ์ด ์ ํ๋ฆฌ์ผ์ด์
์ ์ ์์ ์ธ ๋์์ด ์๋๋๊น? ์ต๊ทผ์ ์ถ์ ๋ ๋ฏธ๋ฆฌ๋ณด๊ธฐ ์ฑ์ฒ๋ผ ๋ณด์
๋๋ค.
๊ทธ๋ฌ๋ ๋๋ ๋์ ํฌํ์ ์คํํ ๋ฐฉ๋ฒ์ด ํ์ํฉ๋๋ค. ์ค๋์ ๊ทธ๋ ๊ฒ ํ ์์๋ ๊ฒ ๊ฐ์ต๋๋ค (๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ํญ ์ด๊ธฐ).
์ด ๋ฌธ์ ์ ๋ํด ์ฐ๋ฆฌ๊ฐ ํ ์์๋ ์ผ์ด ์๋์ง ์ ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. "๊ฐ๋ฐ์ ํ๋ซํผ> ์ฑ ๋ฐฐํฌ"์นดํ ๊ณ ๋ฆฌ์ ํผ๋๋ฐฑ์ ์ ์ถํด ์ฃผ์๊ฒ ์ต๋๊น? ์ด๋ฅผ ํตํด ์ฌ๋ฐ๋ฅธ ํ์ผ๋ก ์ ๋ฌํ๊ณ ๋งค์ฐ ์ ์ฉํ ์ง๋จ ์ ๋ณด๋ฅผ ์์ง ํ ์ ์์ต๋๋ค.
์ฐ๊ฒฐ : ์ด๊ฒ๋ # 1538
๋๋ ๊ฒฐ์ ์ ๋์ํ์ง๋ง. ๊ด๋ฆฌ์ ๋ชจ๋์์ ๋ช
์ ์ ์ผ๋ก ์คํํ์ง ์๊ณ chocolatey
๋ฅผ ์ฌ์ฉํ๋ ๊ฒ์ ๋งค์ฐ ๊ณ ํต ์ค๋ฝ์ต๋๋ค. (
@musm ๋ด PowerShell 6 ๊ตฌ์ฑ์ ๋ค์์ด ์์ต๋๋ค.
function GoAdmin { start-process pwsh โverb runAs }
(์ด์ powershell์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ pwsh
๋ฅผ powershell
๋์ฒด)
๋ฐ๋ผ์ chocolatey๋ฅผ ํตํด ํจํค์ง๋ฅผ ์ค์น / ์
๋ฐ์ดํธํด์ผ ํ ๋๋ง๋ค GoAdmin
(Windows ํฐ๋ฏธ๋์ ํธ์คํ
๋ PowerShell์์)๋ฅผ ์
๋ ฅํ๋ฉด ๋ณ๋์ Admin powershell ์ฐฝ์ผ๋ก ์ด๋ํฉ๋๋ค. ๊ฑฐ๊ธฐ์์ ๋ชจ๋ ์ด์ฝ๋ฆฟ ๊ด๋ฆฌ ๋ช
๋ น์ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ด๋ฆฌ์ ์ฐฝ์ ๋ซ๊ณ Windows ํฐ๋ฏธ๋ ์ธ์
์ refreshenv
๋ฅผ ์
๋ ฅํ์ฌ ๋ชจ๋ PATH ๋ณ์๋ฅผ ์
๋ฐ์ดํธํฉ๋๋ค. ๊ฝค ์ฝ์ต๋๋ค.
"๋ฒ ์ด"pwsh๋ก ์ง์ ์ด๋ํ๋ ๋์ wt
(Windows ํฐ๋ฏธ๋)์ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ํ์ง๋ง ๋ถ๊ฐ๋ฅ ํด ๋ณด์
๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ฌ์ํ ๋ถ๋ง์
๋๋ค. Meh. :-)
๊ด๋ฆฌ์๋ก WT (0.9.433.0)๋ฅผ ์์ํ๋ ค๊ณ ํ ๋ ์ฌ์ ํ ์ค๋ฅ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ต์ WT ๋ฐ Windows (v10.0.18363.657)๋ฅผ ์ฌ์ฉํ๋ ์ฌ๋ฌ ์ปดํจํฐ์์ ๋ฐ์ํฉ๋๋ค.
์ด ๋ฌธ์ ๊ฐ ์ข
๋ฃ ๋ ์ด์ ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ดํดํ์ง ๋ชปํฉ๋๋ค.
์ค์ ๋ก๋ ํจ๊ณผ๊ฐ ์์์ต๋๋ค. ๋ง์ง๋ง์ผ๋ก๋ฐ์ ์ฝ๋ฉํธ๋ Windows ๋ฌธ์ ์ด๋ฉฐ ํ๊ณผ ํจ๊ป ๋ฌธ์ ๋ฅผ ์ ๊ธฐ ํ ๊ฒ์ ๋๋ค.
๊ทธ๋ค์ ํ๊ณผ ํจ๊ป ๊ทธ๊ฒ์ ์ฌ๋ฆด ๊ฒ์ ๋๋ค.
๋๋ ๊ทธ๋ ๊ฒ ์๊ฐํ์ง ์๋๋ค. ๊ทธ๊ฒ์ " ๋น์ ์ ํ๊ณผ ํจ๊ป ๊ทธ๊ฒ์ ๋์ฌ์ผํ๋ค"์ ๋น์ทํฉ๋๋ค.
๊ฐ์ฅ ์ค์ํ ๊ธฐ๋ฅ ์ค ํ๋๊ฐ ๊ณ ์ฅ๋ Win Terminal v1์ ์ถ์ ํ ์๊ฐ์ ์์ต๋๋ค.
WT์ ํ์ฌ ์ํํ ๋ฒ์ ์ ์ฌ์ฉํ ์ ์๊ฒ๋๋ฏ๋ก ์ํ๊น์ต๋๋ค.
๊ด๋ฆฌ์์๊ฒ ์ powershell ์ฐฝ์ด ๋ํ๋ฉ๋๋ค. ์ ํํ ์ฐ๋ฆฌ๊ฐ ์ํ๋ ๊ฒ์ ์๋์ง๋ง ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋ค. ๋ค์ ๋ช ๋ น ์ค์ ์ฌ์ฉํ์ฌ ์ ํ๋กํ์ ๋ง๋ญ๋๋ค.
"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",
์ ์ด๊ฒ์ด ๋ซํ ์์ต๋๊น? ์์น ํญ ๊ธฐ๋ฅ์ด ํ์ํฉ๋๋ค.
์ด๊ฒ์์ด ์ ์ฅ์์ ๋ค๋ฅธ ์ฌ๋ฌ ๋ฌธ์ ์์ ์ถ์ ๋๊ณ ์์ต๋๋ค.
@ DHowett-MSFT ๊ฐ์ฌํฉ๋๋ค. ์ด๋ค ๋ฌธ์ ๋ฅผ ๋ฐ๋ผ์ผํฉ๋๊น? ์์์ ์ธ๊ธ ํ ๊ฒ ๊ฐ์ง ์์ต๋๋ค.
@musm ๋ด PowerShell 6 ๊ตฌ์ฑ์ ๋ค์์ด ์์ต๋๋ค.
function GoAdmin { start-process pwsh โverb runAs }
(์ด์ powershell์ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ
pwsh
๋ฅผpowershell
๋์ฒด)๋ฐ๋ผ์ chocolatey๋ฅผ ํตํด ํจํค์ง๋ฅผ ์ค์น / ์ ๋ฐ์ดํธํด์ผ ํ ๋๋ง๋ค
GoAdmin
(Windows ํฐ๋ฏธ๋์ ํธ์คํ ๋ PowerShell์์)๋ฅผ ์ ๋ ฅํ๋ฉด ๋ณ๋์ Admin powershell ์ฐฝ์ผ๋ก ์ด๋ํฉ๋๋ค. ๊ฑฐ๊ธฐ์์ ๋ชจ๋ ์ด์ฝ๋ฆฟ ๊ด๋ฆฌ ๋ช ๋ น์ ์คํํ ์ ์์ต๋๋ค. ๊ทธ๋ฐ ๋ค์ ๊ด๋ฆฌ์ ์ฐฝ์ ๋ซ๊ณ Windows ํฐ๋ฏธ๋ ์ธ์ ์refreshenv
๋ฅผ ์ ๋ ฅํ์ฌ ๋ชจ๋ PATH ๋ณ์๋ฅผ ์ ๋ฐ์ดํธํฉ๋๋ค. ๊ฝค ์ฝ์ต๋๋ค."๋ฒ ์ด"pwsh๋ก ์ง์ ์ด๋ํ๋ ๋์
wt
(Windows ํฐ๋ฏธ๋)์ ์คํํ๋ ๋ฐฉ๋ฒ์ ์ํ์ง๋ง ๋ถ๊ฐ๋ฅ ํด ๋ณด์ ๋๋ค. ๊ทธ๋ฌ๋ ๊ทธ๊ฒ์ ์ฌ์ํ ๋ถ๋ง์ ๋๋ค. Meh. :-)
Windows์์์ด ๊ตฌ์ฑ ํ์ผ์ ์ด๋์ ์์ต๋๊น?
@ mian-muhammad ๋๋ ๊ทธ๊ฐ PowerShell ํ๋กํ์ ์๋ฏธํ๋ค๊ณ ์๊ฐํฉ๋๋ค. https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/about/about_profiles
ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ์์ต๋๋ค. chocolatey๋ฅผ ์ฌ์ฉํ์ฌ sudo๋ผ๋ ํจํค์ง๋ฅผ ์ค์นํ ์ ์์ต๋๋ค (choco install -y sudo). ๊ทธ๋ฐ ๋ค์ ์์๋๋ก sudo๋ฅผ ์ฌ์ฉํ ์ ์์ต๋๋ค.
ํ์ฌ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ํฐ๋ฏธ๋์ ์ด ์์๋ ๊ฒ ๊ฐ์ต๋๋ค. ์ ์ด๋ ๋ด ์ปดํจํฐ์์ ์๋ํฉ๋๋ค. ConEmu (# 632์์ ๋ ผ์ ๋จ)์ ๊ฐ์ ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ํญ์ ์์ฑ ํ ์ ์๋ค๋ฉด ๋ ์ข๊ฒ ์ง ๋ง ํ์ฌ์ด ๋ฌธ์ ๋ฅผ ๋ค์ ์ด ํ์๊ฐ ์์ต๋๋ค.
๊ธฐํ ๊ด๋ จ ๋ณด๋ฅ์ค์ธ ๊ธฐ๋ฅ ์์ฒญ :
sudo
์ด ์ค๋ ๋๋ฅผ ๋ฐ๋ฅด๋ ๋ชจ๋ ์ฌ๋์ด ๋์์ด๋๊ธฐ๋ฅผ ๋ฐ๋๋๋ค.
@ DHowett-MSFT์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ค๋ฉด ์ด๋ค ๋ฌธ์ ๋ฅผ ๋ฐ๋ผ์ผํฉ๋๊น? ๋ด๊ฐ ๋ณผ ์์๋ ์ ์ผํ ๋ค๋ฅธ ์ธ๊ธ ๋ ๋ฌธ์ ๋ ๋ซํ์๋ # 1538์ ๋๋ค.
๋ชจ๋ ์ฌ๋์ด ์ต์ Windows ์ฑ์ ์ฌ์ฉํ๋ ค๋ ๊ฒฝ์ฐ ๋ณ๋์ ๊ด๋ฆฌ์ ๊ณ์ ์ ์ฌ์ฉํ๋ ๋์ ํ์ค ์ฌ์ฉ์์ ๋ํ ๊ด๋ฆฌ ๊ถํ์ ๊ฐ์ ธ์ผํ๋ค๋ Microsoft์ ์ ์ฅ์ด ์๋ ์ ์์ต๋๋ค. ์ด๊ฒ์ ๊ฒฐ๊ตญ ํ์ค ๋ณด์ ๊ดํ์ ์๋ฐฐ๋ฉ๋๋ค.
@danstur ์ ๊ฐ ๊ทธ ์ฐ๋ ค์ ๋ํด ์ ์ ํ ์์๋ ์ต๊ณ ์ ๊ฒ์ # 4217์ ๋๋ค. ์ฑ ๋ฐฐํฌ๋ฅผ ๋ด๋นํ๋ ํ๊ณผ ํจ๊ป ์์ ์ ์ถ๊ตฌํ๊ณ ์์ต๋๋ค. ๋ฌธ์ ๋ ์ฑ์ด ์ ์ธ๊ณ์ ์ผ๋ก _ ์ค์น _๋์์ง๋ง ์ฌ์ฉ์๋ณ๋ก ๋ง ๋ฑ๋ก๋์ด ์๋ค๋ ๊ฒ์ ๋๋ค. ์ด๊ฒ์ ํฐ๋ฏธ๋๊ณผ ๊ฐ์ ํ์ค win32 ์์ฉ ํ๋ก๊ทธ๋จ ์คํ์ ์ง์ํ๋๋ก ๋งค์ฐ ๋๋ฆฌ๊ฒ ๋ฐ์ ํ Windows 8 ์ฉ์ผ๋ก ๊ตฌ์ถ ๋ ์ผ๋ถ ์ธํ๋ผ์์ต๋๋ค. # 1386์ ์ฐ๋ฆฌ๊ฐ ํจํค์ง์์ ๋ฒ์ด๋ ํจํค์ง ๋ฐฐํฌ ์์ง์ ๋ฌธ์ ๊ฐ์๋ ๊ธฐ์ ๊ณ ๊ฐ๊ณผ ์ฌ๋๋ค์ ์ํด ์ข ๋ ์ ํต์ ์ธ ๋ฐฉ์์ผ๋ก ๋ฐฐํฌํ๋ ๊ฒ์ ์ถ์ ํฉ๋๋ค.
@ DHowett-MSFT ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ถ์ ์ค์ด๋ผ๋ ์์์ ๋ฃ๊ณ ๊ธฐ์ฉ๋๋ค.
๋ช
ํํํ๊ธฐ ์ํด : # 1386์ ์ธ๊ธ ๋ ์ต์
์ ํตํด ์ ํ๋ฆฌ์ผ์ด์
์ ์ค์นํ๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์๋ก ์คํํ ์ ์์ต๋๊น, ์๋๋ฉด ์ฌ์ ํ ์๋ํ์ง ์์ต๋๊น? ๋ค๋ฅธ ์ฌ์ฉ์์ ํจ๊ป ์ฑ์ ๋ฑ๋ก ( Add-AppxPackage
์คํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๊น?) ํ ํ์๊ฐ ์์ต๋๋ค.
@ DHowett-MSFT Dustin Howett FTE ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์ถ์ ์ค์ด๋ผ๋ ์์์ ๋ฃ๊ณ ๊ธฐ์ฉ๋๋ค.
๋ช ํํํ๊ธฐ ์ํด : # 1386์ ์ธ๊ธ ๋ ์ต์ ์ ํตํด ์ ํ๋ฆฌ์ผ์ด์ ์ ์ค์นํ๋ฉด ๋ค๋ฅธ ์ฌ์ฉ์๋ก ์คํํ ์ ์์ต๋๊น, ์๋๋ฉด ์ฌ์ ํ ์๋ํ์ง ์์ต๋๊น? ๋ค๋ฅธ ์ฌ์ฉ์์ ํจ๊ป ์ฑ์ ๋ฑ๋ก (
Add-AppxPackage
์คํํ๋ ๊ฒ์ ์๋ฏธํฉ๋๊น?) ํ ํ์๊ฐ ์์ต๋๋ค.
์ ์๋ํฉ๋๋ค. ํด๋น ์ฌ์ฉ์๋ก Add-AppxPackage๊ฐ ํ์ํฉ๋๋ค. :๋ฏธ์:
๊ทธ๊ฒ ๋คํ ์ด๋ค์.
์ด์ ๋ณ๋์ ๊ด๋ฆฌ์ ๋ฐ ์ฌ์ฉ์ ๊ณ์ ์ผ๋ก ์ค์ ๋ ๋ชจ๋ Windows ํ๊ฒฝ์์ (๊ถ์ฅ) MS Store์์ ์ค์น ํ ๊ฒฝ์ฐ ๊ด๋ฆฌ์๊ฐ ํฐ๋ฏธ๋์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํฉ๋๋ค.
๊ทธ๊ฒ ๋คํ ์ด๋ค์.
์ด์ ๋ณ๋์ ๊ด๋ฆฌ์ ๋ฐ ์ฌ์ฉ์ ๊ณ์ ์ผ๋ก ์ค์ ๋ ๋ชจ๋ Windows ํ๊ฒฝ์์ (๊ถ์ฅ) MS Store์์ ์ค์น ํ ๊ฒฝ์ฐ ๊ด๋ฆฌ์๊ฐ ํฐ๋ฏธ๋์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํฉ๋๋ค.
๋๋ฅผ ์ํด ์ผํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ก์ปฌ ์ปดํจํฐ์์ ๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธํ๊ณ Store์์ ํฐ๋ฏธ๋์ ๋ค์ "์ค์น"ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ผ๋ฐ ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธํ๋ฉด ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ํฐ๋ฏธ๋์ ์คํํ ์ ์์ต๋๋ค.
์, ๋ฌธ์ ๋ Store๊ฐ ํ์ฌ ์ฌ์ฉ์์๊ฒ๋ง ์ฑ์ ๋ฑ๋กํ๋ ๊ฒ ๊ฐ์ต๋๋ค. ๋๋ถ๋ถ์ ์ฑ์๋ ๊ด์ฐฎ์ง ๋ง (์ค์ ๋ก ๋๋ถ๋ถ์ ์ฑ์ด ์ค์น๋์ด์ผํ๋ ๋ฐฉ์) ํฐ๋ฏธ๋๊ณผ ๊ฐ์ ๊ด๋ฆฌ ์ฑ์๋ ์ ํฉํ์ง ์์ต๋๋ค.
Hey future me : ์์ ๋ฑ๋ก ๋ฌธ์ ๋ MSFT : 20356613์ ํตํด ๋ด๋ถ์ ์ผ๋ก ์ถ์ ๋๊ณ ์์ผ๋ฉฐ # 4217์์ ์์ธํ ๋ ผ์๋ฉ๋๋ค.
์๋
ํ์ธ์,
๋ด ์ผ๋ฐ ๊ณ์ ์์๋์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ด๋ฆฌ์ ๊ณ์ ์ ๋ก๊ทธ์ธ ํ ์ํ์์ ํฐ๋ฏธ๋ ์ฑ์ ๋ค์ ์ค์นํ๋ ๊ฒ์
๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ผ๋ฐ ๊ณ์ ์์ ๊ด๋ฆฌ์๋ก ์คํํ ์ ์์ต๋๋ค.
์ฌ๊ธฐ๋ ๋ง์ฐฌ๊ฐ์ง์ ๋๋ค. ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋์ง ์์ ๊ฒ ๊ฐ๋ค
๊ด๋ฆฌ์๋ก ์คํ์ค์ธ _tab_์ ์ด ์์๋ ์๋ฒฝํ์ง ์์ ๋ ๋ค๋ฅธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ด ์์ง๋ง ๊ธฐ์กด (๋น ๊ด๋ฆฌ) ํญ์์ PowerShell ์ฐฝ์ ๊ด๋ฆฌ์๋ก ์ด ์ ์์ต๋๋ค.
https://github.com/jt-github/elevate
์ด๊ฒ์ ์์ @CraigHead๊ฐ ์ ์ํ ํ๋กํ์ ์ถ๊ฐํ๋ ๊ฒ๊ณผ ๋์ผํ ๋ฐฉ์์ผ๋ก ์๋ํฉ๋๋ค.
"commandline": "powershell.exe -Command \"Start-Process powershell.exe -Verb RunAs\"",
๋ด ๋ฒ์ ์ด elevate
๋ช
๋ น์ ์คํํ์ฌ ์คํ๋๋ ๊ฒ์ ์ ์ธํ๊ณ ๋.
@ jt-github ๊ทธ๊ฒ์ sudo์ ๊ฐ์ต๋๋ค.
์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค : https://github.com/pldmgg/Sudo
์ ํํ sudo
๋ง ๋ด ๊ฒ๋ณด๋ค ํจ์ฌ ๋ฉ์ง์ง๋ง ๋ด ๊ฒ์ ๋๋ฌด ๋จ์ํด์ ์ดํดํ๊ณ ์ฌ์ฉํ๊ธฐ ์ฝ์ต๋๋ค.
๋ง์ ๋ถ๋ค๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก ์ ๋์ด ๋ฌธ์ ์ ๋ถ๋ช ํ์ผ๋ฏ๋ก powershell.exe, pwsh.exe ๋๋ Microsoft ํฐ๋ฏธ๋์์ ๊ด๋ฆฌ์ ์ ธ์ ์ด๊ธฐ ์ํด ๋ค์ ํจ์๋ฅผ ๋ง๋ค์์ต๋๋ค.
# Function Test-IsAdmin
function Test-IsAdmin {
<#
.Synopsis
Tests if the user is an administrator
.Description
Returns true if a user is an administrator, false if the user is not an administrator
.Example
Test-IsAdmin
#>
$identity = [Security.Principal.WindowsIdentity]::GetCurrent()
$principal = New-Object Security.Principal.WindowsPrincipal $identity
$principal.IsInRole([Security.Principal.WindowsBuiltinRole]::Administrator)
}
# Function New-AdminShell
function New-AdminShell {
<#
.Synopsis
Starts an Elevated PowerShell Console.
.Description
Opens a new PowerShell Console Elevated as Administrator. If the user is already running an elevated
administrator shell, a message is displayed in the console session.
.Example
New-AdminShell
#>
$Process = Get-Process | Where-Object { $_.Id -eq "$($PID)" }
if (Test-IsAdmin = $True) {
Write-Warning -Message "Admin Shell already running!"
}
else {
if ($Process.Name -eq "powershell") {
Start-Process -FilePath "powershell.exe" -Verb runas -PassThru
}
if ($Process.Name -eq "pwsh") {
Start-Process -FilePath "pwsh.exe" -Verb runas -PassThru
}
}
}
# Function New-AdminTerminal
function New-AdminTerminal {
<#
.Synopsis
Starts an Elevated Microsoft Terminal.
.Description
Opens a new Microsoft Terminal Elevated as Administrator. If the user is already running an elevated
Microsoft Terminal, a message is displayed in the console session.
.Example
New-AdminShell
#>
if (Test-IsAdmin = $True) {
Write-Warning -Message "Admin Shell already running!"
}
else {
Start-Process "wt.exe" -ArgumentList "-p pwsh" -Verb runas -PassThru
}
}
๋๊ตฐ๊ฐ๊ฐ ์ ์ฉํ๋ค๊ณ ์๊ฐํ๊ธฐ๋ฅผ ๋ฐ๋๋๋ค. ๋ด PowerShell ํ๋กํ์ ์ถ๊ฐ ํ์ผ๋ฏ๋ก ํญ์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์๋ ํ์ธ์,
๋ด ์ผ๋ฐ ๊ณ์ ์์๋์ด ๋ฌธ์ ๊ฐ ๋ฐ์ํ์ต๋๋ค. ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๊ด๋ฆฌ์ ๊ณ์ ์ ๋ก๊ทธ์ธ ํ ์ํ์์ ํฐ๋ฏธ๋ ์ฑ์ ๋ค์ ์ค์นํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ผ๋ฐ ๊ณ์ ์์ ๊ด๋ฆฌ์๋ก ์คํํ ์ ์์ต๋๋ค.
์ด๊ฒ์ ๋์๊ฒ๋ ํจ๊ณผ๊ฐ ์์์ง๋ง ๋งค์ฐ ์ง์ฆ๋์ง๋ง ํ์ฌ ๋คํธ์ํฌ์์ ๊ฑฐ์ ์ ์ผํ ๋ฐฉ๋ฒ์ด์์ต๋๋ค. ๋ก์ปฌ ๊ด๋ฆฌ์๊ฐ์๋ ๊ฒฝ์ฐ์ด ์ฑ์ ๊ธฐ์ ๋คํธ์ํฌ์์ ์์น ๋ privs๋ก ์ธํด ๊ฑฐ์ ์ํํฉ๋๋ค.
๊ทธ๊ฒ ๋คํ ์ด๋ค์.
์ด์ ๋ณ๋์ ๊ด๋ฆฌ์ ๋ฐ ์ฌ์ฉ์ ๊ณ์ ์ผ๋ก ์ค์ ๋ ๋ชจ๋ Windows ํ๊ฒฝ์์ (๊ถ์ฅ) MS Store์์ ์ค์น ํ ๊ฒฝ์ฐ ๊ด๋ฆฌ์๊ฐ ํฐ๋ฏธ๋์ ์ฌ์ฉํ ์ ์์ผ๋ฏ๋ก์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผํฉ๋๋ค.๋๋ฅผ ์ํด ์ผํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋ก์ปฌ ์ปดํจํฐ์์ ๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธํ๊ณ Store์์ ํฐ๋ฏธ๋์ ๋ค์ "์ค์น"ํ๋ ๊ฒ์ ๋๋ค. ๊ทธ๋ฐ ๋ค์ ์ผ๋ฐ ์ฌ์ฉ์๋ก ๋ก๊ทธ์ธํ๋ฉด ๊ด๋ฆฌ์ ๊ถํ์ผ๋ก ํฐ๋ฏธ๋์ ์คํํ ์ ์์ต๋๋ค.
์๋, ๊ทธ๊ฒ์ ๋๋ฅผ ์ํด ์๋ํ์ง ์์์ต๋๋ค :(
๊ทธ๋์ ๋๋ ๊ทธ๊ฒ์ ์์ ๋์ต๋๋ค.
๊ด๋ฆฌ์ ๊ณ์ ๊ณผ ๊ธฐ๋ณธ ๊ณ์ ๋ชจ๋์ ์ค์นํด์ผํ์ง๋ง, ์๋ํ๋ ค๋ฉด ๊ด๋ฆฌ์ ๊ณ์ ๋ ๋ก๊ทธ์ธํด์ผํฉ๋๋ค. ์ด๊ฒ์ ์ปดํจํฐ๊ฐ ๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธ ํ ๋ค์ ์ฌ์ฉ์๋ฅผ ์ ํ (๋ก๊ทธ ์์ํ์ง ์์)ํ๊ณ ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด ์ฑ์ด ๊ด๋ฆฌ์ ๋ชจ๋์์ ์คํ๋ ์ ์์ต๋๋ค.
๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ์ง ์์ผ๋ฉด ๋ ๊ณ์ ์ ์ค์น๋ ์คํ ์ด ์ฑ์ ๊ด๋ฆฌ์๋ก ์คํํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
๊ทธ๋์ ๋๋ ๊ทธ๊ฒ์ ์์ ๋์ต๋๋ค.
๊ด๋ฆฌ์ ๊ณ์ ๊ณผ ๊ธฐ๋ณธ ๊ณ์ ๋ชจ๋์ ์ค์นํด์ผํ์ง๋ง, ์๋ํ๋ ค๋ฉด ๊ด๋ฆฌ์ ๊ณ์ ๋ ๋ก๊ทธ์ธํด์ผํฉ๋๋ค. ์ด๊ฒ์ ์ปดํจํฐ๊ฐ ๊ด๋ฆฌ์๋ก ๋ก๊ทธ์ธ ํ ๋ค์ ์ฌ์ฉ์๋ฅผ ์ ํ (๋ก๊ทธ ์์ํ์ง ์์)ํ๊ณ ๋ค๋ฅธ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํด์ผ ํจ์ ์๋ฏธํฉ๋๋ค. ์ด๋ ๊ฒํ๋ฉด ์ฑ์ด ๊ด๋ฆฌ์ ๋ชจ๋์์ ์คํ๋ ์ ์์ต๋๋ค.
๊ด๋ฆฌ์ ๊ณ์ ์ผ๋ก ๋ก๊ทธ์ธํ์ง ์์ผ๋ฉด ๋ ๊ณ์ ์ ์ค์น๋ ์คํ ์ด ์ฑ์ ๊ด๋ฆฌ์๋ก ์คํํ ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค.
์ด๊ฒ์ ๋๋ฅผ ์ํด ์๋ํฉ๋๋ค. ๐
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๋ํ ์์ ํ์ ์ค์์ ๊ด๋ฆฌ์๋ก ์ ์ฒด ํฐ๋ฏธ๋์ ์คํํ๋ ๋์ ์ ์์ผ๋ก ๋์์ด ์์ต๋๊น?
์๋ฅผ ๋ค๋ฉด :
์ ํญ์ ์ด ๋ ์ฌ์ฉ์์๊ฒ ๋ฉ์์ง๋ฅผ ํ์ํ๊ฑฐ๋ ๊ด๋ฆฌ์๋ก ์ ์ธ์คํด์ค๋ฅผ ์ด ๊ฒ์ธ์ง ๋ฌป๋ UI๊ฐ ์์ต๋๊น?
๋๋ ํฐ๋ฏธ๋์ ๋ง์ฐ์ค ์ค๋ฅธ์ชฝ ๋ฒํผ์ผ๋ก ํด๋ฆญํ์ฌ ์ ํํ ๋์ผํ ๋๋ ํ ๋ฆฌ์์ ๊ด๋ฆฌ ํญ์ ์ฝ๋ ๋ค. (์ด๊ฒ์ sudo์ ๊ฐ์ ๋ฉ์ง ๊ธฐ๋ฅ์ด ์๊ธฐ ๋๋ฌธ์ powershell-core์ ๋งค์ฐ ์ ์ฉํฉ๋๋ค)