方法一:bat提权
因为在需要bat中调用python和node的脚本,默认会使用IIS定义的系统路径,默认的系统用户的路径是C:\Windows\System32\config\systemprofile\AppData\Roaming,造成node和python的包找不到,执行失败。所以需要一个IIS直接以当前用户的权限执行BAT命令的方法。
RunAsTool
将需要执行的bat拖入RunAsTool,然后将快捷方式发送到桌面,形成lnk文件,然后再执行一个bat执行这个lnk文件即可
@echo off
start "" "D:\Test.lnk"
方法二:设置虚拟环境,绕过权限问题
比如执行python
使用python的虚拟环境
python3 -m venv myenv
# win
.\\myenv\\Scripts\\activate
# mac/linux
source myenv/bin/activate
# deactivate
# 安装这个脚本需要安装的包
pip install xxxx
在bat脚本中执行
# 到指定目录
cd /d d:\test
# 激活虚拟环境
call D:\test\activate
# 再执行其他python脚本
python xxx.py
经过测试下面几种方式是不行的:
方法一:runas 提权
方式一:runas /savecred 可以让用户手动输入一次密码,第二次就不需要输入了,将IIS配置->应用程序池->进程模型->标识,设置为本机用户登录,似乎就可以保持IIS执行bat的权限和本机用户的执行一致,经过测试不行
猜测是IIS的权限不够,组策略修改:gpedit.msc->管理模板->系统->凭据分配->允许保存凭据在远端调用修改为已启用,没有找到这个选项,放弃
方法二:使用vbs
在win10上测试不成功
使用VBS的SendKeys来输入密码
echo set pws=WScript.CreateObject("WScript.Shell")>%temp%\pws.vbs
echo pws.SendKeys "1{ENTER}">>%temp%\pws.vbs
wscript %temp%\pws.vbs&runas /u:test1 cmd.exe