Nonprivileged: create_usertask.cmd

File create_usertask.cmd, 3.9 KB (added by pcfreak, 11 years ago)

create_usertask.cmd

Line 
1@ECHO OFF
2CLS
3
4REM Some Variables
5
6REM Where to store the created XML-File
7SET XML=%temp%\%RANDOM%_temp.xml
8
9REM Name of the Network Configuration Operators group (without quotes)
10SET NGROUP=Network Configuration Operators
11
12REM What to start via the generated task
13SET TOSTART=C:\Program Files\OpenVPN\bin\openvpn-gui.exe
14
15
16REM We need to find the domain/computer and username of the user that is logging on
17REM We run under a different user context so we need a trick to do that
18REM Session to search, usually "console"
19SET SESSION=console
20REM Process to search, usually "explorer.exe"
21SET PROCESS=explorer.exe
22for /f "usebackq tokens=8,9 delims=\ " %%a IN (`tasklist /fi "SESSIONNAME eq %SESSION%" /FI "IMAGENAME eq %PROCESS%" /V /NH`) do (
23  SET DOM=%%a
24  SET USER=%%b
25  SET ACCOUNT=%%a\%%b
26)
27echo The detected user was %USER% in domain/computer %DOM% .
28
29
30
31ECHO ^<?xml version="1.0" encoding="UTF-16"?^> > "%XML%"
32
33ECHO^<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"^> >> "%XML%"
34
35ECHO. ^<Settings^> >> "%XML%"
36ECHO.   ^<MultipleInstancesPolicy^>StopExisting^</MultipleInstancesPolicy^> >> "%XML%"
37ECHO.   ^<DisallowStartIfOnBatteries^>false^</DisallowStartIfOnBatteries^> >> "%XML%"
38ECHO.   ^<StopIfGoingOnBatteries^>false^</StopIfGoingOnBatteries^> >> "%XML%"
39ECHO.   ^<AllowHardTerminate^>true^</AllowHardTerminate^> >> "%XML%"
40ECHO.   ^<StartWhenAvailable^>false^</StartWhenAvailable^> >> "%XML%"
41ECHO.   ^<RunOnlyIfNetworkAvailable^>false^</RunOnlyIfNetworkAvailable^> >> "%XML%"
42ECHO.    ^<IdleSettings^> >> "%XML%"
43ECHO.     ^<StopOnIdleEnd^>true^</StopOnIdleEnd^> >> "%XML%"
44ECHO.     ^<RestartOnIdle^>false^</RestartOnIdle^> >> "%XML%"
45ECHO.    ^</IdleSettings^> >> "%XML%"
46ECHO.   ^<AllowStartOnDemand^>true^</AllowStartOnDemand^> >> "%XML%"
47ECHO.   ^<Enabled^>true^</Enabled^> >> "%XML%"
48ECHO.   ^<Hidden^>false^</Hidden^> >> "%XML%"
49ECHO.   ^<RunOnlyIfIdle^>false^</RunOnlyIfIdle^> >> "%XML%"
50ECHO.   ^<DisallowStartOnRemoteAppSession^>false^</DisallowStartOnRemoteAppSession^> >> "%XML%"
51ECHO.   ^<UseUnifiedSchedulingEngine^>false^</UseUnifiedSchedulingEngine^> >> "%XML%"
52ECHO.   ^<WakeToRun^>false^</WakeToRun^> >> "%XML%"
53ECHO.   ^<ExecutionTimeLimit^>PT0S^</ExecutionTimeLimit^> >> "%XML%"
54ECHO.   ^<Priority^>7^</Priority^> >> "%XML%"
55ECHO^</Settings^> >> "%XML%"
56
57ECHO^<Actions Context="Author"^> >> "%XML%"
58ECHO.   ^<Exec^> >> "%XML%"
59ECHO.   ^<Command^>"%TOSTART%"^</Command^> >> "%XML%"
60ECHO.   ^</Exec^> >> "%XML%"
61ECHO^</Actions^> >> "%XML%"
62
63ECHO^<RegistrationInfo^> >> "%XML%"
64ECHO.   ^<Date^>2013-07-11T11:39:44.2138665^</Date^> >> "%XML%"
65ECHO.   ^<Author^>Der PCFreak^</Author^> >> "%XML%"
66echo.   ^<Description^>This task will run when the user %ACCOUNT% logs on. It will then start OpenVPN-GUI with in the context of this user with highest privileges at logon of this user.^</Description^> >> "%XML%"
67ECHO^</RegistrationInfo^> >> "%XML%"
68
69ECHO^<Principals^> >> "%XML%"
70ECHO.   ^<Principal id="Author"^> >> "%XML%"
71ECHO.   ^<UserId^>%ACCOUNT%^</UserId^> >> "%XML%"
72ECHO.   ^<LogonType^>InteractiveToken^</LogonType^> >> "%XML%"
73ECHO.   ^<RunLevel^>HighestAvailable^</RunLevel^> >> "%XML%"
74ECHO.   ^</Principal^> >> "%XML%"
75ECHO^</Principals^> >> "%XML%"
76
77ECHO^<Triggers^> >> "%XML%"
78ECHO.   ^<LogonTrigger^> >> "%XML%"
79ECHO.   ^<Enabled^>true^</Enabled^> >> "%XML%"
80ECHO.   ^<UserId^>%ACCOUNT%^</UserId^> >> "%XML%"
81ECHO.   ^</LogonTrigger^> >> "%XML%"
82ECHO^</Triggers^> >> "%XML%"
83
84ECHO. ^</Task^> >> "%XML%"
85
86
87REM Create the task using schtasks
88REM do not use /f since we only want to create this task once!
89%windir%\system32\schtasks.exe /create /xml "%XML%" /tn "%DOM%_%USER%_openvpn" /DELAY 0000:25
90
91
92REM Add the user to the Network Configuration Operators group
93net localgroup "%NGROUP%" %ACCOUNT% /add
94
95REM Delete temporary XML FILE
96DEL /Q "%XML%"