我想要一种方法来启动单个命令文件 - 但它既可以使用完全管理员权限运行,也可以使用非管理员令牌运行 -
以非管理员身份运行 - 并转换为管理员 - 或者以管理员身份运行并启动非管理员进程都可以
具体来说,我需要运行命令
SUBST E: G:\SUBST\E
NET USE Y: \\SVR\PATH
无论是作为管理员还是非管理员
内置的 VBS、PS 等软件就可以了 - 我使用的是 Windows 7
我有以下带有 RUNAS 的批处理文件,但令人困惑的是它根本不起作用 - 我也尝试了直接 runas /user:domain\usename /savecred “cmd /c subst” - 我编写了批处理文件来查看发生了什么
脚本文件
subst e: C:\Users\username\Documents\subst\e
subst
pause
一只蝙蝠
runas /user:domain\usename /savecred "cmd /c C:\Users\username\Documents\subst\E\a1.bat"
- 如果我在管理员 CMD 中运行 A1.bat,那么其他管理员 CMD 环境就会获得驱动器
- 如果我在管理员命令中运行 A.bat,则除了临时运行之外,没有管理员命令可以获取驱动器 - 包括原始的
- 如果我在非管理员命令中运行 A1.bat,则其他管理员命令将获取驱动器
- 如果我在非管理员 cmd 中运行 A.bat,则没有 cmd 环境可以获取驱动器 - 除了临时的 runas one
我还没有尝试使用 NET USE 命令
背景是,我发现当我跑步时
NET USE Y: \\SVR\PATH
如果没有管理权限,那么当我稍后以管理权限运行命令时,我就看不到 Y:驱动器 - 目前我的桌面上只有两个快捷方式 - 我双击它们 - 一个提示输入管理员,另一个则没有 - 我需要先双击管理员,因为有些程序只是单实例,驻留并需要以管理员身份运行。
我有一个简单的键盘快捷键菜单系统,当我按下组合键时,它会运行各种命令 - 为了使它可移植,我使用 SUBST 命令将我的 E: 驱动器映射到某个位置。由于某些命令需要以管理员身份运行 - 菜单系统需要具有管理员和不具有管理员的环境具有相同的驱动器映射
答案1
既然你说你对内置很满意视窗功能,我在下面提供了一些批处理文件解决方案,其中包含我测试过的管理员和非管理员操作Windows 7的。由于您说系统提示您输入管理员身份,因此此解决方案还将提示输入管理员凭据的密码以运行它,就像在第一次输入后可以选择保存以供将来使用一样。
批处理文件(管理员提示)
RUNAS /USER:<administrator> "CMD /C SUBST E: G:\SUBST\E"
RUNAS /USER:<administrator> "CMD /C NET USE Y: \\SVR\PATH"
笔记:使用此方法时,每次运行这些命令时,您都必须输入运行这些命令的管理员帐户的密码。
CMD /K
如果您希望在运行命令后保留提升的命令提示符,则可以在此处使用。
删除已保存的凭证
在里面跑步对话框(⊞
+ R
)输入rundll32.exe keymgr.dll, KRShowKeyMgr
并按Enter
。当存储的用户名和密码窗口打开后,您可以突出显示要删除的已保存凭据,然后按消除选项。
批处理文件(管理员使用/SaveCred
)
RUNAS /USER:<administrator> /SAVECRED "CMD /C SUBST E: G:\SUBST\E"
RUNAS /USER:<administrator> /SAVECRED "CMD /C NET USE Y: \\SVR\PATH"
笔记:使用此方法时,必须输入管理员帐户的密码第一次使用时然后在后续运行中,当您指定
/SAVECRED
开关时,您不再需要输入密码。CMD /K
如果您希望在运行命令后保留提升的命令提示符,则可以在此处使用。
批处理文件(非管理员)
SUBST E: G:\SUBST\E
NET USE Y: \\SVR\PATH
笔记:当您使用此方法时,系统不会提示您,并且基本上您会以非提升权限的用户身份运行,并且会根据安全上下文登录到机器上。