如何在启动时以管理员身份运行脚本

3
我有一个案例,我的用户在win7上以管理员身份运行我编写的脚本(bat文件)。我正在寻找一种简单的方法(不需要安装任何工具),通过这个批处理文件使我编写的另一个脚本在Windows启动时运行。 我尝试使用启动文件夹,但那样会以非管理员权限运行我的脚本。我还阅读了关于使用runas命令的解决方案,但它没有起作用,而且提前知道用户详细信息也很棘手。我在网上搜索过,但无法找到任何帮助我通过命令行自动完成此操作的内容。
更新: 通过查看答案,我认为情况可能不够清楚。我在我的电脑上编写此脚本。我将这个脚本(批处理文件)交给我的客户,他们缺乏如何执行除简单操作以外的其他操作的知识,例如以管理员身份打开cmd并运行我预先编写的批处理文件。总之,我需要这个批处理文件能够在计算机启动时设置一个进程(另一个批处理或vbs文件)以管理员特权运行(再次强调,不需要我的客户进行任何复杂的操作,我希望我的脚本为他们完成所有操作)。

https://superuser.com/a/1039156/1138391 - TECNO
2个回答

1
如果您没有管理员账户的凭据,您将无法以提升的权限运行脚本。如果您有这些凭据,则可以设置一个计划任务(在this SevenForums post上有描述),在管理员帐户下运行它。
仔细检查脚本,并确保它不包含任何可能导致问题的东西,比如不可避免的GUI演示-this question on ServerFault讨论了这个陷阱。

请注意,它不一定是“管理员”帐户(RID 500)。它可以是管理员组中的任何帐户。 - Eryk Sun
@eryksun - 一般情况下,您是正确的,但我们曾经观察到过只有“-500”帐户的凭据实际上是有效的情况。这可能是我们组织中的群组策略问题,但我从未能够完全分析它。 - Jeff Zeitlin
默认的UAC策略将管理员账户(RID 500)排除在具有分离标准/提升令牌的登录中。因此,非特权的CreateProcessWithLogonW(例如runas.exe)可以使用此帐户以完全管理员权限启动进程。这就是为什么从Vista开始,默认安装也会禁用此帐户的原因。 - Eryk Sun
我真的不明白这如何回答我的问题,它需要手动设置任务计划程序。我只有一个批处理文件,我正在另一台电脑上编写它,我知道我的客户将以管理员权限运行它。 - Ziv Glazer
3
@ZivGlazer,如果你以管理员权限运行批处理文件,它可以使用schtasks.exe创建一个在启动时自动运行的任务,并以SYSTEM身份运行该任务,例如schtasks /create /tn [任务名称] /ru system /sc onstart /tr "批处理脚本的绝对路径" - Eryk Sun
@eryksun,这正是我一直在寻找的并且它奏效了 :) 我回到家后会使用您的解决方案并更新内容。 - Ziv Glazer

1

创建一个批处理程序的快捷方式,设置其属性>高级选项为管理员身份运行,然后将该快捷方式移动到启动目录。


1
除非UAC被配置为从不通知,否则每次用户登录时都会提示征求同意。 - Eryk Sun
另外,我需要通过批处理文件来完成它,您的解决方案是手动的(设置部分)。而且通知不好,我需要它在启动时无需用户操作即可工作,尽管如果我也可以通过我的批处理配置UAC以永不通知,那么这将是可以接受的。 - Ziv Glazer
@Magoo 有没有绕过提示的方法? - Nevin Raj Victor
@NevinRajVictor:什么提示? - Magoo
@Magoo "您是否允许以下程序对您的计算机进行更改"。如果我将我的脚本单独粘贴到启动项中,它会运行但不是以管理员身份。如果我创建一个脚本的快捷方式并赋予管理员权限,则无法运行。如果我手动尝试运行它们,它们会弹出上述提示框。 - Nevin Raj Victor
@NevinRajVictor:恐怕我不知道。我会在我的机器上自动禁用UAC,所以我从来没有看到它。 - Magoo

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接