cof*_*ine 7 c# uac elevation elevated-privileges
出于某种原因,我的C#程序需要使用提升的权限重新启动.我使用以下代码来实现它:
private static void RestartForPermissionsFix()
{
ProcessStartInfo processInfo = new ProcessStartInfo();
processInfo.Verb = "runas";
processInfo.FileName = Assembly.GetExecutingAssembly().Location;
Process.Start(processInfo);
}
Run Code Online (Sandbox Code Playgroud)
这非常有效.
之后,我"解决我的特权",我要重新启动程序unelevated.没有"runas",我尝试了与上面相同,但它不起作用.我假设从提升的进程启动的进程自动升高.任何的想法?
为了从高完整性流程启动中等完整性的流程,我相信您必须使用OpenProcessToken
,复制它,使用令牌从令牌中删除高完整性SID SetTokenInformation
,然后使用该令牌创建新流程过程使用CreateProcessAsUser
.这与此示例类似,只是添加了您必须删除高完整性SID的低完整性SID.注意:我没有测试过这个,所以我不是100%肯定它会起作用.
我建议你让最初的非高效流程继续运行,让它等待其升级的对应物完成(例如使用Process.WaitForExit
).一旦完成,它可以像以前一样继续下去.这将更容易,更简单.
归档时间: |
|
查看次数: |
1459 次 |
最近记录: |