gpt4 book ai didi

.net - 使用不同的用户凭据启动另一个海拔高度的过程

转载 作者:行者123 更新时间:2023-12-03 12:16:37 25 4
gpt4 key购买 nike

我正在尝试从非提升过程开始提升过程,但是我还需要为具有管理凭据的用户提供用户名和密码。我已经尝试了"runas"方法来进行海拔提升以及使用 list ,但是两者都会产生不同的错误。

例如,如果我这样做(不使用需要提升的 list ):

ProcessStartInfo info = new ProcessStartInfo(path);

info.UseShellExecute = false;
info.UserName = username;
info.Password = securePwd;
info.Domain = "MyDomain";
info.Verb = "runas";

var proc = Process.Start(info);

该过程将启动,而不会显示UAC确认对话框,并且在尝试执行需要管理员权限的命令时失败(我只是想将测试文件写入Program Files目录)。

如果我将 list 添加到目标应用程序以指示它需要提升,那么我将得到一个 Win32Exception,该操作说明需要提升。

问题似乎是将 UseShellExecute设置为 false(因为在这种情况下,两种方法都可以正常工作),但是我必须将其设置为false才能在其他用户帐户下启动该进程。

如何从未提升的进程启动提升的进程并手动提供用户名和密码?

BOUNTY编辑:虽然可以不要求用户输入管理员凭据,但是完全可以接受UAC nag对话框。我不想在这里绕过UAC。

最佳答案

我很惊讶没有办法做到这一点,直到我在克里斯· jackson (Chris Jackson)的博客条目中找到它:

Why Can’t I Elevate My Application to Run As Administrator While Using CreateProcessWithLogonW?

You need a bootstrapper. Some process which will let you do the transition to the alternate user, which could be responsible for running the requireAdministrator application. So, you could design something like this:

enter image description here

Why don’t we just create the ShellExecuteWithLogonW API? I’ll never say never, and we might at some point. But today, the use cases for this APIs have been use cases where there has been an alternate design which is superior.

The most common request is for people writing home-grown software deployment software, where they’d like to encode credentials right into the app and elevate their own process. The real problem here is not the lack of the API, it’s that you have admin credentials encoded in your app for the world to read.



因此,该解决方案需要 ShellExecute,这是唯一知道如何触发 同意对话框的解决方案。

它带来了一个好处:您已经在使用一个人的密码做什么?

奖金Chat不休

Server Core上没有UAC,因为没有窗口显示同意提示。

关于.net - 使用不同的用户凭据启动另一个海拔高度的过程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9872764/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com