gpt4 book ai didi

c# - 重新启动程序未提升

转载 作者:太空狗 更新时间:2023-10-29 20:11:25 24 4
gpt4 key购买 nike

出于某种原因,我的 C# 程序需要以提升的权限重新启动。我使用下面的代码来实现它:

private static void RestartForPermissionsFix()
{
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.Verb = "runas";
processInfo.FileName = Assembly.GetExecutingAssembly().Location;

Process.Start(processInfo);
}

效果很好。

在我“修复我的权限”之后,我想重新启动程序未提升。我在没有“runas”的情况下尝试了与上面相同的方法,但它不起作用。我假设从提升的进程启动的进程会自动提升。有什么想法吗?

最佳答案

为了从高完整性进程启动中等完整性进程,我相信您必须使用 OpenProcessToken 获取当前进程 token 。 ,复制它,使用 SetTokenInformation 从 token 中删除高完整性 SID ,然后使用该 token 使用 CreateProcessAsUser 创建新进程.这类似于 this example ,除非添加低完整性 SID,否则您必须删除高完整性 SID。注意:我还没有测试过这个,所以我不能 100% 确定它会起作用。

我建议您让原始未提升的进程保持运行状态,并让它等待其提升的对应进程完成(例如使用 Process.WaitForExit )。完成后,它可以像以前一样继续不提升。这会更容易,更万无一失。

关于c# - 重新启动程序未提升,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6735653/

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