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