全部。这可能看起来像一个重复的问题,在这里有很多关于提升和降低儿童进程的问题。是否可以提升多个子进程的权限,仅提示一次?
我知道使用UseShellExecute = true
连同Verb = "runas"
选项以提升权限启动子进程。
例(在许多问题的答案找到):
var info = new ProcessStartInfo(Assembly.GetEntryAssembly().Location)
{
UseShellExecute = true, // !
Verb = "runas",
};
我在这里的问题是不是开始升高访问的子进程,我想知道是否有一种方法来提示升高访问只一次,之后几次启动同一个子进程,比如说其中的8个进程。
我正在使用的应用程序使用排队系统来处理任务。根据用户的内核数量,为每个内核启动子进程(QueueProcessor),然后开始处理该队列。因此,本质上,我想检查用户的权限,提升权限一次,并启动所有8个队列处理器。
我无法使用manifest-route来要求整个应用程序在管理权限中运行,因为这不是我们许多用户的选项。编辑根据@ MPatel的评论:为了澄清,我们特别不强制用户按照设计决定以管理员身份运行应用程序。
显然你可以看到当你每次想要运行这些任务之一时,如果你不得不点击UAC对话8次,它会变得很烦人。
我遇到了这篇文章:Vista UAC The Definitive Guide,在我的搜索过程中,但我在C#.NET 3.5项目中实现C++ dll时遇到问题。这是基本上让我问这是否可能的文章。
可能值得一提的另一件事:我不确定我是否稍微误解了这个问题。用户必须有足够的权限才能使用我们程序使用的基本SQL功能。所以我认为我的问题可能不是让子进程运行完整的管理权限,而是让子进程启动。我得到的问题是.NET不允许某些用户从正在运行的应用程序运行子进程。让用户使用“以管理员身份运行”运行主应用似乎可以解决此问题。是否有一些UAC特定的权利,我可以通过提示设置一次,以允许主App启动child.exe?
用提升的权限启动父进程?当然,这将启动具有相同权限的所有子进程。 – 2014-09-25 09:31:07
我已经编辑了一下这个问题。我们特别不强制用户以管理员身份运行。为什么我在问题中添加了最后一位,我们的用户至少可以访问sql服务器并执行查询,所以这实际上是我需要的所有权利。所以我认为我的问题可能会更强迫父应用程序能够启动子进程。 – DeVil 2014-09-25 09:41:29