首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Vista中运行而不是提升(.NET)

如何在Vista中运行而不是提升(.NET)
EN

Stack Overflow用户
提问于 2008-10-13 07:47:53
回答 1查看 11.3K关注 0票数 18

我有一个必须以管理员身份运行的应用程序。

该应用程序的一小部分是使用Process.Start启动其他应用程序

启动的应用程序也将以管理员身份运行,但我更愿意看到它们以“普通”用户身份运行。

我该如何做到这一点?

/johan/

EN

回答 1

Stack Overflow用户

发布于 2015-12-27 00:40:48

我也有同样的需求,于是我找到了使用Windows的任务调度服务的解决方案。

因此,首先添加the Task Scheduler Managed Wrapper library to your project并使用此代码创建一个任务,将其配置为作为受限用户(td.Principal.RunLevel = TaskRunLevel.LUA;)运行,注册该任务,运行该任务,完成后删除该任务。

代码语言:javascript
复制
// Get the service on the local machine
using (var ts = new TaskService())
{
     const string taskName = "foo";

     // Create a new task definition and assign properties
     var td = ts.NewTask();
     td.RegistrationInfo.Description = "start foo.exe as limited user";

     // Create an action that will launch foo.exe, with argument bar in workingdir C:\\
     td.Actions.Add(new ExecAction("C:\\foo.exe", "bar", "C:\\"));

     td.Settings.Priority = ProcessPriorityClass.Normal;

     // run with limited token
     td.Principal.RunLevel = TaskRunLevel.LUA;

     td.Settings.AllowDemandStart = true;

     td.Settings.DisallowStartIfOnBatteries = false;

     td.Settings.StopIfGoingOnBatteries = false;

     // Register the task in the root folder
     var ret = ts.RootFolder.RegisterTaskDefinition(taskName, td);

     var fooTask = ts.FindTask(taskName, true);
     if (null != fooTask )
     {
         if (fooTask.Enabled)
         {
             fooTask.Run();

             Thread.Sleep(TimeSpan.FromSeconds(1));

             // find process and wait for Exit
             var processlist = Process.GetProcesses();

             foreach(var theprocess in processlist)
             {
                 if (theprocess.ProcessName != "foo")
                    continue;

                 theprocess.WaitForExit();
                 break;
             }
         }
    }

    // Remove the task we just created
    ts.RootFolder.DeleteTask(taskName);
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/196949

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档