3

我目前正在使用CruiseControl.NET来自动化我的构建。在我的构建环境中,我们有两种不同的方式来构建解决方案——一种是通过Keil uVision4 IDE,另一种是通过 Visual Studio 2008。

我已经成功获得了 Visual Studio 解决方案,可以使用 CruiseControl.NET 正确构建,并创建了一个批处理文件,该文件正确使用 Keil 的 uVision 命令行界面来编译我的 uvproj 项目(此处为编译详细信息)。

问题描述

1)如果我使用管理员权限创建命令提示符,我可以在我的 Windows 2008 服务器上成功执行构建脚本并构建项目(我手动执行此操作 - 开始 -> 运行 -> 使用 ctrl-shift-enter 运行的 cmd作为管理员)。

2) 但是,如果我在没有管理员权限的情况下创建命令提示符并尝试执行批处理文件,则批处理文件将不起作用,除非我接受要求我确认运行批处理脚本需要管理员权限的提示。

如何以管理员身份通过 CruiseControl 自动执行批处理文件?

这是可以使用RunAs命令自动化的吗?


技术细节

1) 正在执行的批处理文件非常简单 - 它删除旧的输出并重新生成输出,在下面的位置创建一个构建日志文件。

set BuildLogLocation=BuildLog\BuildLog.txt

echo on
cd ../..
cd PTM
rmdir /s /q output
mkdir output
mkdir BuildLog
C:\Keil\UV4\UV4.exe -r myProj.uvproj -o %BuildLogLocation%

echo ErrorLevel of build is %ERRORLEVEL%
echo build complete, see %BuildLogLocation%

2)目前我正在寻找使用 Exec 功能来运行上面的 Keil 构建脚本:

<Exec>
    <Command>C:\myProject\Build\KeilBuild\BuildScript.bat<Command/>
    <buildTimeoutSeconds>600<buildTimeoutSeconds/>
    <!-- Details about error codes can be found here:
    http://www.keil.com/support/man/docs/uv4/uv4_commandline.htm -->
    <successExitCodes>0,1</successExitCodes>
<Exec/>

相关问题:

4

4 回答 4

1

您能否以具有管理权限的用户身份运行 CCService、CruiseControl.NET Windows 服务?我会先试试。

如果这不起作用,我会使用 runas 来运行您的脚本。您必须将管理用户的密码嵌入到调用 runas 的脚本中。

于 2012-06-07T21:39:29.627 回答
1

我知道这很旧,但是,您是否通过巡航控制获得了官方的方法?

通常我创建它并调用它来调用其他进程“作为管理员”。

在内容中制作一个“.VBS”脚本:

暗淡 strBatchPath

strBatchPath = " PATH-TO-FILE.EXE"

设置 runBatch = CreateObject("shell.application")

runBatch.shell 执行 strBatchPath,,,"runas",1

对于找不到官方方式的人来说,这可能是一个选择

于 2016-11-03T15:07:21.560 回答
0

您可以从 sysinternals 尝试 psExec。如果您不需要以 nt-authority 帐户运行,您应该能够以与 runas 相同的方式使用它。它允许您将用户名/密码作为开关传递(如果有记忆的话)

于 2012-06-07T15:46:21.987 回答
0

我发现当使用 PSEXEC 并使用-h交换机时,它会在目的地“以管理员身份运行”

例如

psexec -h \ServerToRunOn /accepteula -u DOMAIN\USER -p PASSWORD "PATH-TO-FILE"

我正在使用 CC.Net 调用带有上述内容的批处理文件。这将以管理员身份运行该文件

于 2016-11-04T16:27:03.233 回答