我需要能够以不同的用户身份运行 Word、Excel 等。当您打开 .docx、.doc 等时也必须这样做...
我的猜测是编辑注册表并在其中添加一个命令,以便在执行 .exe 时它以另一个用户身份启动。
有一个更好的方法吗?
答案1
是的。编写一个批处理文件,将参数设置为变量。然后使用 runas 或 psexec 命令运行所需的应用程序,并将变量作为参数传递给应用程序。然后将批处理文件设置为该文件类型的默认应用程序。
set arg1=%1
runas /user:<UserName> "C:\Program Files\GIMP 2\bin\gimp-2.8.exe" %1
runas 的问题在于您每次都需要输入密码。您可能想要使用 psexec,因为您也可以编写密码脚本。
set arg1=%1
psexec -u user -p password "C:\Program Files\GIMP 2\bin\gimp-2.8.exe" %1
答案2
我认为,当您启动一个进程时,它所属的用户与拥有父进程的用户相同。也就是说,如果您以 Gandalf 的身份启动命令提示符,然后运行,Notepad.exe
那么您将以 Gandalf 的身份运行记事本,即使您以 Sauron 的身份登录也是如此。
考虑到这一点,在我看来,您想要做的就是以您选择的用户身份运行 Windows 资源管理器 (使用runas
),然后您通过它运行的任何内容都将在您选择的用户下运行 - 包括可执行文件、快捷方式和文件 (当您通过 Windows 资源管理器“运行”文件时,它只运行与其关联的应用程序并将文件的名称作为参数传递)。只需确保在运行 Windows 资源管理器之前将其终止,否则它只会打开一些文件夹。
恐怕我无法测试这一点,因为我的系统上只有一个用户帐户。