我需要向我的 C# WPF 应用程序添加一个函数来修复某些注册表项。
这将通过调用 regsvr32.exe/s mylib.dll
来完成。现在,从我看到的使用带有新 Process
对象的 runas
动词来看,这应该很容易做到。 (我的 dll 确实需要管理员权限,因为它写入了一些注册表项。)
但问题是有多个DLL,因此多次调用regsvr32.exe
,不可能将所有注册都放在一个.dll
中。但是,如果我只是多次 runas
,用户会在我启动它时收到尽可能多的 UAC 对话框……我不希望这样。
我只想要一个对话框,我真的很想避免有一个神秘的额外 fixer.exe
文件来代替启动。现在,我只了解非常基本的 Windows 安全性知识,但难道不应该以某种方式获得“管理员” token (这让我获得 UAC 对话框)并使用它来启动不同的进程吗?
最佳答案
您可以只使用命令行参数和 shell 到您自己的 .exe 以管理员身份运行该进程。当你的应用程序加载时,检查那些命令行参数......如果它们在那里,注册你所有的 dll,然后退出。
或者,您可以编写一个批处理文件来注册所有 dll 和 shell,并具有管理员权限。
关于c# - 以管理员身份运行多个应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4479349/