This repository was archived by the owner on Jan 16, 2018. It is now read-only.
-
-
Notifications
You must be signed in to change notification settings - Fork 313
Expand file tree
/
Copy pathvagrant.bat
More file actions
116 lines (95 loc) · 2.49 KB
/
Copy pathvagrant.bat
File metadata and controls
116 lines (95 loc) · 2.49 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
@ECHO OFF
REM // AUTOMATIC PRIVILEGE ELEVATION CODE RESEARCHED FROM VARIOUS SOURCES USING A PUBLIC SEARCH ENGINE.
REM // http://stackoverflow.com/a/12264592/319862
REM // http://stackoverflow.com/a/28467343/319862
REM // http://ss64.com/vb/syntax-elevate.html
setlocal EnableDelayedExpansion
set ABS_DIR=%~dp0
set ABS_PATH=%~f0
set DO_ELEVATE=""
set NEEDS_ELEVATE="1"
set IS_ELEVATED="0"
set PROXY_ARGS=%*
set CLOSE_WINDOW="0"
if "%1" == "-h" (
set NEEDS_ELEVATE="0"
)
if "%1" == "--help" (
set NEEDS_ELEVATE="0"
)
if "%1" == "-v" (
set NEEDS_ELEVATE="0"
)
if "%1" == "--version" (
set NEEDS_ELEVATE="0"
)
if "%1" == "version" (
set NEEDS_ELEVATE="0"
)
if "%1" == "plugin" (
set NEEDS_ELEVATE="0"
)
:: Check if we are elevated
FSUTIL dirty query %systemdrive% >nul
If !errorLevel! EQU 0 (
set IS_ELEVATED="1"
)
::Remove the elevation tag
IF '%1'=='ELEV' (
for /f "tokens=1,* delims= " %%a in ("%*") do set PROXY_ARGS=%%b
IF !IS_ELEVATED! EQU "0" (
ECHO ISSUE ELEVATING PRIVILEGES. CANNOT PROCEED.
PAUSE
EXIT /B
)
set CLOSE_WINDOW="1"
)
IF !IS_ELEVATED! EQU "0" IF !NEEDS_ELEVATE! EQU "1" (
set DO_ELEVATE="1"
)
set "QUOTED_PATH=%~f0"
set "QUOTED_ARGS=ELEV"
::Add quotes to the batch path, if needed
set "script=%0"
set script=%script:"=%
IF '%0'=='!script!' ( GOTO PathQuotesDone )
set "QUOTED_PATH=""%QUOTED_PATH%"""
:PathQuotesDone
::Add quotes to the arguments, if needed.
:ArgLoop
IF '%1'=='' ( GOTO EndArgLoop ) else ( GOTO AddArg )
:AddArg
set "arg=%1"
set arg=%arg:"=%
IF '%1'=='!arg!' ( GOTO NoQuotes )
set "QUOTED_ARGS=%QUOTED_ARGS% "%1""
GOTO QuotesDone
:NoQuotes
set "QUOTED_ARGS=%QUOTED_ARGS% %1"
:QuotesDone
shift
GOTO ArgLoop
:EndArgLoop
if !DO_ELEVATE! EQU "1" (
:getfilename
SET FILENAME="%temp%\VAGRANT-BAT-ELEVATE-!RANDOM!!RANDOM!!RANDOM!.vbs"
IF EXIST "!FILENAME!" goto :getfilename
::Create and run the vb script to elevate the batch file
ECHO CreateObject^("Scripting.FileSystemObject"^).DeleteFile^(Wscript.ScriptFullName^) > "!FILENAME!"
ECHO CreateObject^("Shell.Application"^).ShellExecute "cmd", "/k ""!QUOTED_PATH! !QUOTED_ARGS!""", "", "runas", 1 >> "!FILENAME!"
REM ECHO "!FILENAME!"
"!FILENAME!"
EXIT /B
)
REM // ENSURE CWD IS SCRIPT DIR - ELEVATING CHANGES CWD
cd /d %ABS_DIR%
pushd vagrant-bin
set PATH=%CD%;%PATH%
popd
@ECHO ON
@vagrant.exe !PROXY_ARGS!
@ECHO OFF
IF !CLOSE_WINDOW! EQU "1" (
PAUSE
EXIT
)