Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to run a program automatically as admin on Windows 7 at startup?

I created my own parental control app to monitor my kids activity. The app's only GUI is a task bar icon. The program is installed as admin. I'd like this program to be started up automatically as admin user on Windows startup, so that standard users cannot kill it from task manager.

I can create a registry key at:

HKLM\Software\Microsoft\Windows\CurrentVersion\Run 

to make it run automatically when Windows starts up. The problem is that the program is started as the logged in (standard) user.

How can I make it run in an elevated mode? Is this possible at all in Win7?

like image 930
newman Avatar asked Mar 25 '11 01:03

newman


People also ask

How do I make a program start automatically in Windows 7?

Right-click the icon of the program you want to start automatically, and then click Copy (or press Ctrl + C). In the All Programs list, right-click the Startup folder, and then click Explore. Click Organize > Paste (or press Ctrl+V) to paste the program shortcut into the Startup folder.


1 Answers

You need to plug it into the task scheduler, such that it is launched after login of a user, using a user account that has administrative access on the system, with the highest privileges that are afforded to processes launched by that account.

This is the implementation that is used to autostart processes with administrative privileges when logging in as an ordinary user.

I've used it to launch the 'OpenVPN GUI' helper process which needs elevated privileges to work correctly, and thus would not launch properly from the registry key.

From the command line, you can create the task from an XML description of what you want to accomplish; so for example we have this, exported from my system, which would start notepad with the highest privileges when i log in:

<?xml version="1.0" encoding="UTF-16"?> <Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">   <RegistrationInfo>     <Date>2015-01-27T18:30:34</Date>     <Author>Pete</Author>   </RegistrationInfo>   <Triggers>     <LogonTrigger>       <StartBoundary>2015-01-27T18:30:00</StartBoundary>       <Enabled>true</Enabled>     </LogonTrigger>   </Triggers>   <Principals>     <Principal id="Author">       <UserId>CHUMBAWUMBA\Pete</UserId>       <LogonType>InteractiveToken</LogonType>       <RunLevel>HighestAvailable</RunLevel>     </Principal>   </Principals>   <Settings>     <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>     <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>     <StopIfGoingOnBatteries>false</StopIfGoingOnBatteries>     <AllowHardTerminate>true</AllowHardTerminate>     <StartWhenAvailable>false</StartWhenAvailable>     <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>     <IdleSettings>       <StopOnIdleEnd>true</StopOnIdleEnd>       <RestartOnIdle>false</RestartOnIdle>     </IdleSettings>     <AllowStartOnDemand>true</AllowStartOnDemand>     <Enabled>true</Enabled>     <Hidden>false</Hidden>     <RunOnlyIfIdle>false</RunOnlyIfIdle>     <WakeToRun>false</WakeToRun>     <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>     <Priority>7</Priority>   </Settings>   <Actions Context="Author">     <Exec>       <Command>"c:\windows\system32\notepad.exe"</Command>     </Exec>   </Actions> </Task> 

and it's registered by an administrator command prompt using:

schtasks /create /tn "start notepad on login" /xml startnotepad.xml 

this answer should really be moved over to one of the other stackexchange sites, as it's not actually a programming question per se.

like image 109
Petesh Avatar answered Oct 16 '22 16:10

Petesh