调用 Process/Batch 以提升的权限执行

Invoking a Process/Batch to execute with elevated rights

我们在中央服务器上启动并运行了一个颠覆系统。目前,我可以通过网络共享访问该 svn 存储库。由于这不是好的做法,我将关闭该网络共享并仅通过 "svn" 命令访问我的 svn(为此我使用 TortoiseSVN 客户端)。

由于未来将启动新项目,我和我的同事们必须能够在该服务器上创建新的存储库。对于创建,您需要对该服务器目录的写权限,但我不希望那样。我也不想每次都 运行 我们的管理员(这对我们的管理员来说没问题,我得到他的支持)。

首先,我的想法是:在服务器上触发一个进程来创建存储库。但是在这里,如果我不是服务器管理员(尝试了 WMI VB 脚本),我会遇到如何触发进程的问题。所以问题来了,如何在脚本执行期间提升调用者的权限?我不想在脚本或批处理文件中以纯文本形式存储管理员密码。

其次,这是否可以通过其他形式来完成?你们是如何创建存储库的?

据我所知,在 CMD 中无法自动提升。我能想到的唯一方法是使用 windows 调度程序。您可以编写一个 bat 文件来执行您需要的所有命令。然后用调度程序创建一个任务,并告诉它 运行 bat 文件。在创建过程中,将 "Triggers" 部分留空,选中 "run with highest privileges" 框,输入具有所需权限的用户帐户并输入密码。然后转到 "Settings" 并选中 "Allow task to be run on demand" 框。

现在是第二部分(可选)。熟悉服务器上的用户策略,以便允许您希望能够执行该过程的用户触发服务器上的计划任务。您还可以在您的服务器上将用户 PC 输入为 "trusted"。有几种方法可以实现这一目标。但是,之后用户必须能够在服务器上执行计划任务。

大功告成!如果您完成了可选部分,您的用户可以使用 SCHTASKS /RUN /S <RemoteServerName> /TN "<task name>" 触发任务。不需要存储凭据并且脚本 运行 具有 elevetad 权限。

如果您没有使用 SCHTASKS /RUN /S <RemoteServerName> /U username /P password /TN "<task name>"