일반 cmd창에서 관리자 권한 실행하는 su.cmd (공백처리 수정)
2023.01.08 17:24
지난번에 몇줄로 간단히 만들어 쓰다보니 불편한게 많아서 제대로 만들었습니다.
덕분에 꼭꼭눌러 80줄까지 됐는데 큰것은 아니지만 문자열 처리가 상당히 번거로웠네요
관리자권한 창이 열릴때는 창 크기가 제멋대로고 System32 위치로 고정이라
현제창 크기와 현제경로를 동일하게 유지하도록 했습니다.
모든 언어에서 문자열 처리는 매우 중요한 이슈인데
C와 Cmd는 오래된 만큼 그중 최악이 아닐까 합니다. (최신 언어일수록 문자열 처리에 용이한 경향)
새 창을 띄우지 않고 현재창을 레벨업 하기 위해서는 두번째 첨부파일도 추가하고
su- [명령] 형식으로 하면 UAC와 # 계정으로 승격됩니다.
단 이 경우는 doskey로 설정한 alias는 인식불가,
사용법은 su.cmd 파일을 C:\Windows 같은 패스가 걸린곳에 두고
su : 도움말만 보여주고 아무것도 안함.
su - : 새 명령창 띄움.
su -n : 새 명령창 띄움 (기다리지 않음)
su [명령] 새창 안띄우고 실행 (gui 전용)
su /n [명령] 위와동일, 기다리지 않음)
su- [명령] 이 형식의 경우 cli/gui 구분없이 쓸수 있지만 두번째 첨부파일이 필요.
예 : su - bcdedit : 새 창을 띄워서 bcdedit 실행.
※ 1/10 수정내용 : 다음과 같이 매개변수중 긴 경로명에 공백이 있을경우 실행오류가 발견돼 긴급수정함.
예 : su "C:\Portable\Registry Workshop\RegWorkshopX64.exe" (정상실행 가능)
원인 :윈도우는 긴 경로이 발견되면 자동으로 양 끝에 따옴표를 추가하는데
CMD 에서는 시간이 경과되면 이 따옴표도 문자로 인식돼 원래 기능을 못함.
해결책 - If Exist %var% ... 처럼 쓸경우 기존포함 따옴표는 무조건 제거하고 If Exist "%var%" ... 형식으로 써야만 작동가능.
댓글 [5]
-
빨강모자 2023.01.08 17:37 -
지후빠 2023.01.08 19:00
감사합니다. ^^
-
cungice 2023.01.08 19:37
수고 많으셨습니다.
-
Neutrino 2023.01.08 19:37
참고로 제가쓰는 Doskey Alias 파일 입니다.
cd=cd /d $*
q=exit
pa=mspaint $*
np="%Portable%\npp\notepad++.exe" $*
vi="%Portable%\vim90\vim.exe" $*
off="%Portable%\Utils\MonitorOff.exe"
ue="%Portable%\UltraEdit\Uedit32.exe" $*
qd="%Portable%\Q-Dir\Q-Dir.exe"
ep="%Portable%\EditPlus\editplus.exe"
crt="%Portable%\crt\SecureCRT.exe"
ps="%SystemRoot%\system32\WindowsPowerShell\v1.0\powershell.exe" $*
ise="%SystemRoot%\system32\WindowsPowerShell\v1.0\PowerShell_ISE.exe" $*
rw="%Portable%\Registry Workshop\RegWorkshopX64.exe"
pot="%Portable%\PotPlayer\PotPlayerMini64.exe"
오래전 작성한거라 안쓰는 것들이 있는데 암튼 이런식으로 작성된 alias는 su 실행시 적용가능.
설치방법은 alias.ini 파일을 위의 형식으로 작성하고
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Command Processor
위치에 문자열값 AutoRun 을 만들어 doskey /macrofile=[작성한 alias.ini 경로]
이렇게 적어주면 예전 autoexec.bat와 동일하게 기능합니다.
-
상발이 2023.01.08 21:38
수고하셨습니다.
누구나 정작 본인은 소소하다고 겸양을 내보입니다.
그러나 그 이면에 안보려해도 보여지는 바라다봄의 수고로움은 응원의 박수를 받아도 충분할 것이라 여겨짐니다..꾸벅~~