如何设置程序从文件打开时以管理员身份运行?

如何设置程序从文件打开时以管理员身份运行?

好的,我需要稍微了解一下注册表的细节,所以这就是我得到的和我想要的。

我正在使用一个小的 Word 插件,它可以将拉丁字母转换为西里尔字母,直接音译。现在这个插件的兼容性肯定不是那么理想,因为它增加了 Word 的启动时间,也大大增加了它的关闭时间,在最终关闭之前会停滞 15 秒。其他时候,它还会以某种方式弄乱 normal.dot 模板,询问是否要保存任何更改……好吧,当我以管理员身份运行 Word 时,我可以修复所有这些问题。鉴于它不能通过简单地从兼容性设置中以管理员身份运行来坚持下去,我通过应用程序兼容性工具包将其提升到 Invoker。

现在问题就出在这里——当我首先以独立模式启动 Word,然后从其中打开一个文件时,一切都很顺利,没有崩溃、延迟或过多的提示。但是,如果我通过资源管理器从任何给定文件启动 Word,它将在没有管理员权限的情况下运行。同样,如果我在提升的实例已经运行时通过双击打开文档,那只会打开一个非管理员实例。

现在我去添加了一个 shell 条目,它为我提供了以管理员身份打开 word 文件的右键单击选项,但我更希望它通过默认的双击来运行。

因此,我想要的是,在不依赖 shell 扩展的情况下,通过常规的双击直接从文件打开时提升管理员权限。我到底需要在注册表中的哪个位置挖掘才能实现这种魔力?

答案1

到目前为止看起来您需要做的是...

1)找到以管理员身份加载程序的方法......
2)将所述程序的扩展与先前的命令关联起来。

1) 命令如下powershell -Command "Start-Process 'word.exe' %1 -Verb runAs"。2
) 可以通过右键单击文件并更改相关程序或转到控制面板并在那里进行更改来完成此操作。我相信还有更多方法可以做到这一点。

现在,这一切都很好,但显然 Windows 只想要该程序的名称(因此参数必须被删除)。可以通过创建一个 .bat 文件来解决这个问题,该文件充当程序并将文件名作为其参数,然后将其传递给 Powershell。

然后这个 bat 文件就是这个命令powershell -Command "Start-Process 'word.exe' %1 -Verb runAs"。现在剩下的就是将你想要的扩展名与这个 bat 文件关联起来并执行它。

免责声明:在 UAC 提示出现之前的一秒钟内,您将看到命令提示符加载以执行批处理文件。接受 UAC 提示后,命令提示符将消失,Windows Power Shell 将以管理员权限执行该程序。

这些是几张图片我认为建立这个系统会很有帮助。

测试 UAC 提示! 将扩展名为 .txt 的 Bat 文件关联

相关内容