Run program as other users
在资源管理器里按住 Shift 右击可执行文件,选择 "Run as another user",然后输入用户名和密码。如果需要以 administrator 身份执行可以直接右击可执行文件,选择 "run as administrator"(强烈推荐彻底关闭 UAC 使所有程序默认以 administrator 权限执行)。
CMD:
runas /user:username "cmd.exe /C mycommand"
但通过 CMD 的 runas 仍然会要求输入对应用户的密码,无法通过命令行参数传入密码。傻逼微软!。如果需要通过命令行传入密码,可以使用微软自己做的 PSTools 软件里的 PsExec.exe 命令行工具:
PsExec -accepteula -d -user user -p "123456" "cmd"
PsExec 参数:
- -d : Don't wait for process to terminate (non-interactive).
- -accepteula : This flag suppresses the display of the license dialog.
示例:以其他(非管理员)身份启动 qq
安装 qq 绿色版(直接解压即可使用。测试 QQ-v7.9L.14308-portable 可用)。在系统里创建一个 users 用户组的普通用户专门用来运行 QQ: compmgmt.msc - Local users and groups - Users - Context Menu: New User。
qq/
|--- bin/QQ.exe
|---- start-qq-as-user.bat
start-qq-as-user.bat
setlocal
cd /d %~dp0
cd BIN
PsExec -accepteula -d -user user -p "123456" "QQ.exe"
rename username (id)
Computer Management - users, rename user
Login as another administrator user, rename user profile C:\users\user to C:\users\newuser
regedit, and modify the registry value ProfileImagePath to the new path name.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<User SID>\
A note on
修改用户密码
net user username password
密码有效期
Windows 组策略(gpedit.msc) -Computer Configuration - Windows Settings - Security Settings - Account Policies - Password Policies 里配置的 Maximum password age (默认 42天) 是全局设置,只对系统里没有启用 "Password never expires" 标志的用户生效。安装 Windows 系统时默认的 Administrator 用户应该是启用了 "Password never expires" 的。
查看某个用户的 "Password never expires" 状态 (仅支持 cmd 里执行,不支持 PowerShell):
WMIC USERACCOUNT WHERE Name='Administrator' GET PasswordExpires
修改该状态:
WMIC USERACCOUNT WHERE Name='Administrator' SET PasswordExpires=False
查看当前用户的上次密码修改日期(Password last set)和密码失效日期(Password expires):
net user Administrator
切换组策略里的 "Password max age" 开关并不会重置用户的上次密码修改日期。目前只找到一种在不实际修改用户密码情况下重置用户"上次密码修改日期" 的方式:
运行 lusrmgr.msc 打开用户管理器,点击Users,双击某个用户打开属性设置,依次:取消选中 "Password neve expires", 选中 "User must change password at next logon", 点击 OK。然后再次打开用户属性设置取消掉刚刚的设置:即取消选中 "User must change password at next logon", 选中 "Password neve expires", 点击 OK。 这几步操作会重置用户的"上次密码修改日期"为当前时间,而不会变动用户实际密码。操作后可以用 net user Administrator 命令确认效果。
注意以上说明和步骤只适用于本地用户(local accounts)的 Windows 系统。如果你的 Windows 服务器使用了域(domain),情况可能有很大区别。