我创建了自己的家长控制应用程序来监控我的孩子们的活动。该应用程序的唯一GUI是一个任务栏图标。该程序是以管理员身份安装的。我希望这个程序是自动启动作为管理员用户在Windows启动,以便标准用户不能杀死它从任务管理器。
我可以在以下位置创建注册表项:
HKLM\Software\Microsoft\Windows\CurrentVersion\Run使其在Windows启动时自动运行。问题是程序是以登录(标准)用户的身份启动的。
如何让它在提升模式下运行?这在Win7中是可能的吗?
发布于 2011-03-25 09:54:34
您需要将其插入到任务计划程序中,以便在用户登录后,使用对系统具有管理访问权限的用户帐户启动任务计划程序,该帐户具有该帐户启动的进程的最高权限。
这是一个实现,用于在以普通用户身份登录时自动启动具有管理权限的进程。
我已经使用它来启动'OpenVPN图形用户界面‘助手进程,它需要提升的权限才能正常工作,因此无法从注册表项正确启动。
在命令行中,您可以根据要完成的XML描述创建任务;例如,我们有一个从我的系统导出的任务,它将在我登录时以最高权限启动记事本:
<?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>并由管理员命令提示符使用以下命令进行注册:
schtasks /create /tn "start notepad on login" /xml startnotepad.xml这个答案真的应该转移到其他stackexchange网站上,因为它本身并不是一个编程问题。
发布于 2012-04-26 09:37:59
schtasks /create /sc onlogon /tn MyProgram /rl highest /tr "exeFullPath"发布于 2011-03-25 09:53:55
这是不可能的。
但是,您可以创建在管理用户下运行的服务。
该服务可以在启动时自动运行,并与现有应用程序进行通信。
当应用程序需要以管理员身份执行某些操作时,它可以请求服务为其执行此操作。
请记住,多个用户可以一次登录。
https://stackoverflow.com/questions/5427673
复制相似问题