首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在启动时以管理员身份在Windows 7上自动运行程序?

如何在启动时以管理员身份在Windows 7上自动运行程序?
EN

Stack Overflow用户
提问于 2011-03-25 09:44:29
回答 9查看 145.7K关注 0票数 82

我创建了自己的家长控制应用程序来监控我的孩子们的活动。该应用程序的唯一GUI是一个任务栏图标。该程序是以管理员身份安装的。我希望这个程序是自动启动作为管理员用户在Windows启动,以便标准用户不能杀死它从任务管理器。

我可以在以下位置创建注册表项:

代码语言:javascript
复制
HKLM\Software\Microsoft\Windows\CurrentVersion\Run

使其在Windows启动时自动运行。问题是程序是以登录(标准)用户的身份启动的。

如何让它在提升模式下运行?这在Win7中是可能的吗?

EN

回答 9

Stack Overflow用户

发布于 2011-03-25 09:54:34

您需要将其插入到任务计划程序中,以便在用户登录后,使用对系统具有管理访问权限的用户帐户启动任务计划程序,该帐户具有该帐户启动的进程的最高权限。

这是一个实现,用于在以普通用户身份登录时自动启动具有管理权限的进程。

我已经使用它来启动'OpenVPN图形用户界面‘助手进程,它需要提升的权限才能正常工作,因此无法从注册表项正确启动。

在命令行中,您可以根据要完成的XML描述创建任务;例如,我们有一个从我的系统导出的任务,它将在我登录时以最高权限启动记事本:

代码语言:javascript
复制
<?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>

并由管理员命令提示符使用以下命令进行注册:

代码语言:javascript
复制
schtasks /create /tn "start notepad on login" /xml startnotepad.xml

这个答案真的应该转移到其他stackexchange网站上,因为它本身并不是一个编程问题。

票数 62
EN

Stack Overflow用户

发布于 2012-04-26 09:37:59

代码语言:javascript
复制
schtasks /create /sc onlogon /tn MyProgram /rl highest /tr "exeFullPath"
票数 40
EN

Stack Overflow用户

发布于 2011-03-25 09:53:55

这是不可能的。

但是,您可以创建在管理用户下运行的服务。

该服务可以在启动时自动运行,并与现有应用程序进行通信。

当应用程序需要以管理员身份执行某些操作时,它可以请求服务为其执行此操作。

请记住,多个用户可以一次登录。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5427673

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档