1 | @ECHO OFF |
---|
2 | CLS |
---|
3 | |
---|
4 | REM Detect current user (should be an administrator) |
---|
5 | SET USER=%USERNAME% |
---|
6 | SET DOM=%USERDOMAIN% |
---|
7 | SET ACCOUNT=%DOM%\%USER% |
---|
8 | SET TASKNAME=OpenVPN Logon Task Creator (main) |
---|
9 | |
---|
10 | REM Where to store the created XML-File |
---|
11 | SET XML=%temp%\%RANDOM%_temp.xml |
---|
12 | |
---|
13 | REM What to start via the generated task |
---|
14 | SET TOSTART=C:\ProgramData\OpenVPN\create_usertask.cmd |
---|
15 | |
---|
16 | ECHO ^<?xml version="1.0" encoding="UTF-16"?^> > "%XML%" |
---|
17 | ECHO ^<Task version="1.3" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task"^> >> "%XML%" |
---|
18 | echo. ^<RegistrationInfo^> >> "%XML%" |
---|
19 | echo. ^<Date^>2001-01-01T01:01:01.01^</Date^> >> "%XML%" |
---|
20 | echo. ^<Author^>Der PCFreak^</Author^> >> "%XML%" |
---|
21 | echo. ^<Description^>This task will be executed at logon of any user. The script will then determine the username and domain/computer of this user. The user will then added to the group "Network Configuration Operators" and additionally a new scheduled task with name "%DOM%_%USER%_openvpn" will be created. The automatically created task will be set up to only run when the specific, detected user logs on. This task will then start OpenVPN-GUI with highest privileges at logon.^</Description^> >> "%XML%" |
---|
22 | echo. ^</RegistrationInfo^> >> "%XML%" |
---|
23 | |
---|
24 | echo. ^<Triggers^> >> "%XML%" |
---|
25 | echo. ^<LogonTrigger^> >> "%XML%" |
---|
26 | echo. ^<StartBoundary^>2001-01-01T01:01:01^</StartBoundary^> >> "%XML%" |
---|
27 | echo. ^<Enabled^>true^</Enabled^> >> "%XML%" |
---|
28 | echo. ^</LogonTrigger^> >> "%XML%" |
---|
29 | echo. ^</Triggers^> >> "%XML%" |
---|
30 | |
---|
31 | echo. ^<Principals^> >> "%XML%" |
---|
32 | echo. ^<Principal id="Author"^> >> "%XML%" |
---|
33 | echo. ^<UserId^>%ACCOUNT%^</UserId^> >> "%XML%" |
---|
34 | echo. ^<LogonType^>Password^</LogonType^> >> "%XML%" |
---|
35 | echo. ^<RunLevel^>HighestAvailable^</RunLevel^> >> "%XML%" |
---|
36 | echo. ^</Principal^> >> "%XML%" |
---|
37 | echo. ^</Principals^> >> "%XML%" |
---|
38 | |
---|
39 | echo. ^<Settings^> >> "%XML%" |
---|
40 | echo. ^<MultipleInstancesPolicy^>IgnoreNew^</MultipleInstancesPolicy^> >> "%XML%" |
---|
41 | echo. ^<DisallowStartIfOnBatteries^>false^</DisallowStartIfOnBatteries^> >> "%XML%" |
---|
42 | echo. ^<StopIfGoingOnBatteries^>false^</StopIfGoingOnBatteries^> >> "%XML%" |
---|
43 | echo. ^<AllowHardTerminate^>true^</AllowHardTerminate^> >> "%XML%" |
---|
44 | echo. ^<StartWhenAvailable^>false^</StartWhenAvailable^> >> "%XML%" |
---|
45 | echo. ^<RunOnlyIfNetworkAvailable^>false^</RunOnlyIfNetworkAvailable^> >> "%XML%" |
---|
46 | echo. ^<IdleSettings^> >> "%XML%" |
---|
47 | echo. ^<StopOnIdleEnd^>true^</StopOnIdleEnd^> >> "%XML%" |
---|
48 | echo. ^<RestartOnIdle^>false^</RestartOnIdle^> >> "%XML%" |
---|
49 | echo. ^</IdleSettings^> >> "%XML%" |
---|
50 | echo. ^<AllowStartOnDemand^>true^</AllowStartOnDemand^> >> "%XML%" |
---|
51 | echo. ^<Enabled^>true^</Enabled^> >> "%XML%" |
---|
52 | echo. ^<Hidden^>false^</Hidden^> >> "%XML%" |
---|
53 | echo. ^<RunOnlyIfIdle^>false^</RunOnlyIfIdle^> >> "%XML%" |
---|
54 | echo. ^<WakeToRun^>false^</WakeToRun^> >> "%XML%" |
---|
55 | echo. ^<ExecutionTimeLimit^>P3D^</ExecutionTimeLimit^> >> "%XML%" |
---|
56 | echo. ^<Priority^>7^</Priority^> >> "%XML%" |
---|
57 | echo. ^</Settings^> >> "%XML%" |
---|
58 | |
---|
59 | echo. ^<Actions Context="Author"^> >> "%XML%" |
---|
60 | echo. ^<Exec^> >> "%XML%" |
---|
61 | echo. ^<Command^>"%TOSTART%"^</Command^> >> "%XML%" |
---|
62 | echo. ^</Exec^> >> "%XML%" |
---|
63 | echo. ^</Actions^> >> "%XML%" |
---|
64 | |
---|
65 | echo ^</Task^> >> "%XML%" |
---|
66 | |
---|
67 | |
---|
68 | REM Create the task using schtasks |
---|
69 | REM use /f to make sure we can re-create this task on demand |
---|
70 | %windir%\system32\schtasks.exe /create /TN "%TASKNAME%" /XML "%XML%" /RU %ACCOUNT% /RP "" /F |
---|
71 | |
---|
72 | REM Delete temporary XML FILE |
---|
73 | DEL /Q "%XML%" |
---|