zoukankan      html  css  js  c++  java
  • Windows巧用计划任务实现RunAs的功能

    最近开发了一个应用,需要和其他人提供的脚本做接口。条件约束比较严:

    • 应用(下面简称APP)需要以SYSTEM启动。
    • 脚本(下面简称SCRIPT)不能以SYSTEM启动,而是以特定用户(下面简称UserA)启动。
    • 密码要能自动输入。

    一、Runas

    运行平台是Windows,第一下想到的是runas,参考了“runas命令的使用及RUNAS自动输入密码的方法”一文,做了以下试验。

    runas /user:UserA /savecred "script.bat"
    

    第一次运行会提示输入密码,然后运行脚本,试验成功。

    再次运行runas(注意要加/savecred参数),发现不用再次输入密码。

    重启电脑后,再次试验,仍然有效。

    本以为就这么结束了,然而,用SYSTEM帐户运行后发现,脚本会卡住。

    经分析,SYSTEM帐户与直接打开cmd运行是不一样的,属于不同的会话。因而SYSTEM下没有保存过密码,需要重新输入。

    方案一失败。

    二、 Sanur

    使用参考中提到了Sanur,发现该项目早已不再维护,只支持Windows 2003/XP等早期版本。

    在cmd下试验就没有成功。

    三、lsrunase

    该软件在cmd下试验成功(支持Windows 2008),但在SYSTEM下运行不正常,失败。

    虽然没成功,但软件还是有点用的,介绍使用步骤:

    1. 使用LSencrypt界面程序将原始密码(PwdA)加密为密文(PwdB)。

    2. 在cmd下输入以下命令

    lsrunase /user:UserA /password:7F1z /command:script.bat /runpath:d: /domain:
    

     注意:

    • 所有选项都要加上(/user, /password, /command, /runpath, /domain)
    • /domain:后留空,表示本机默认域或工作组。
    • /password:7F1z,使用加密后的密文(PwdB),而非加密前的密文(PwdA)

    四、cpau

    该软件Usage特别长,相当于一篇短篇小说了。。。具体用法略。

    类似于lsrunase,在cmd下运行正常,在SYSTEM下运行失败,报错误码0xFFFFFFFB(-5)。

    又失败了。

    五、计划任务

    经过一晚上的纠结,终于想出了计划任务。

    计划任务具有以下特点,能满足本次需求:

    • 支持以特定用户启动。
    • 支持保存密码。
    • 密码以密文保存,而非明文。

    经过试验,可行!

    实现结构如下(方括号内为程序、脚本或计划任务,圆括号内为运行用户):

    [APP](SYSTEM)-->[Script_intermediate](SYSTEM)-->script_task(UserA)-->SCRIPT(UserA)

    加入Script_intermediate脚本,内容为

    schtasks /Run /TN /I script_task
    

    计划任务中,新建script_task,内容为调用SCRIPT,并以UserA用户启动。


    欢迎拍砖。

  • 相关阅读:
    maven工程目录结构&常用命令
    slf4j 与 log4j2 实战讲解与日志分割
    跟着大神学zookeeper分布式锁实现-----来自Ruthless
    redis分布式锁Redisson扩展
    Redis分布式锁---完美实现
    redis异常Redis:java.util.NoSuchElementException: Unable to validate object at
    boot中 Quartz注入spring管理类失败
    转载一篇必须超级好的JVM配置实战
    uoj#422. 【集训队作业2018】小Z的礼物(MIn-Max容斥+插头dp)
    uoj#420. 【集训队作业2018】矩形(组合数学)
  • 原文地址:https://www.cnblogs.com/daxia319/p/5123921.html
Copyright © 2011-2022 走看看