我正在寻找 runas 的替代品。
是否可以设置特定的应用程序以始终在不同的帐户下运行?
这与定义执行 run-as 的快捷方式非常不同(这种做法存在一些缺点,我正试图避免这种情况)。
我想告诉系统,如果你运行 Nitro,它应该以不同的用户身份运行。
快捷方式定义方法对我来说效果不佳,因为他必须运行快捷方式,然后浏览文件,并且他将失去只需双击 pdf 并让 Nitro 自动打开该 pdf 的能力(我想继续能够自动打开用户双击的 pdf,但是,它应该始终以不同的用户身份在 Nitor(默认的 pdf 程序)中运行)。
各位,不要因为答案可能是“不,不可能”就否决这个问题。我认为这可能是不可能的,但我以前也感到惊讶(我很高兴,但还是因为提出了一个有价值的问题而被否决)。如果这个问题有答案,那将非常有价值。
我实际上正在使用 Windows 7,但如果可以在 10 上使用,那么我会考虑升级。
答案1
我认为可以通过用执行以下一项操作的脚本替换应用程序的可执行文件来实现RunAs 命令。
这可以是任何脚本,也可以是编译为可执行文件并赋予相同名称的脚本。
如果您不想替换可执行文件,您可以编写一个附加脚本(如.bat
或).cmd
,并将其放在与 相同的文件夹中。在这里,您将遇到 Windows 倾向于在这些类型之前.exe
运行的问题。.exe
您可以通过修改 PATHEXT 环境变量来更改优先顺序,其默认值为
.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC
,从而使您选择的后缀的优先级高于.exe
。
答案2
有一种方法可以做到这一点,但你必须熟悉一些注册表破解方法。我将逐步概述:
- 启动注册表编辑器 (regedit.exe) 并展开 HKEY_CLASSES_ROOT。此键是 Windows 记录所有文件类型关联的地方,它知道双击文件时要打开哪个程序。
- 找到 .pdf 键并记下右侧的 (Default) 条目。这将是与系统上的 PDF 文件关联的应用程序 ID 的名称。我的系统上安装了 Acrobat,所以我的显示为 AcroExch.Document.2017。如果 Nitro 是打开 PDF 的默认程序,您的显示可能会有所不同。
- 向下滚动以找到上面标识的名称的键。请注意,我们仍在查看 HKEY_CLASSES_ROOT。另请注意,可能有很多键的名称非常相似。您必须完全匹配名称。
- 放下该键并转到shell -> 打开 -> 命令如下所示。(默认)值是当您打开(即双击)文件时 Windows 将执行的命令。
您可以在此处输入任何您想要的命令。请注意,在我的示例中,该命令显示 .EXE 文件的完整路径,后跟一个参数(文件的名称):
"C:\Program Files (x86)\Adobe\Acrobat Reader 2017\Reader\AcroRd32.exe" "%1"
在我的系统上,我会将其更改为:
runas /user:<user> "\"C:\Program Files (x86)\Adobe\Acrobat Reader 2017\Reader\AcroRd32.exe\" \"%1\""
<user>
帐户名称在哪里?
就这样。您可以关闭注册表编辑器,然后就大功告成了。
笔记我在步骤 5 中对引号所做的功夫。正确执行这一点很重要。在我的计算机上打开 PDF 的命令不再是AcroRd32.exe
,而是runas.exe
。 Runas.exe
只接受一个参数——要执行的完整命令行,就像您从命令提示符中键入它一样。由于此字符串中有空格,因此必须将整个字符串括在引号中。并且由于引用的字符串本身也有引号(因为文件名中可能包含空格),因此必须将这些引号转义为字符串文字。