我们正在使用Windows控制台程序subinacl.exe授予用户停止和启动服务的权限。因此,我们使用以下命令:
subinacl.exe /service %SERVICE_NAME% /grant=%PC_NAME%\%USER_NAME%=PTO
,其中
%SERVICE_NAME%
=服务名称%PC_NAME%
=计算机名称%USER_NAME%
=应成为启动和停止服务的权限的用户名称在Windows Server 2012上的默认Windows命令行(具有管理员权限)中键入命令时,结果为:
ELITE_INETRSVSERVER : delete Perm. ACE 4 test-pc\test
ELITE_INETRSVSERVER : new ace for test-pc\test
ELITE_INETRSVSERVER : 2 change(s)
Elapsed Time: 00 00:00:00
Done: 1, Modified 1, Failed 0, Syntax errors 0
Last Done : ELITE_INETRSVSERVER
现在我们要将文本保存到文件中或将其放入程序中(通过重定向输出:Getting output from a shell/dos app into a Delphi app)。我们需要在结果中找到Done和Failed的整数值。
问题是,我们无法捕捉空行后的最后三行。
使用控制台重定向时,可以在文件result.txt
中找到前三行。但最后三个显示在控制台中。
subinacl.exe /service %SERVICE_NAME% /grant=%PC_NAME%\%USER_NAME%=PTO > result.txt 1<&2
当以编程方式重定向输出时,我们遇到了同样的问题。
当然,每个命令都以管理员身份执行。
答案 0 :(得分:0)
选项/错误日志可以帮助解决问题:
subinacl /outputlog=c:\NONERRORS.TXT /errorlog=C:\ERRORLOG.TXT /file C:\TEST.TXT /display
如果C:\ ERRORLOG.TXT文件为空,则表示该命令已成功执行。