C#Process.Start与另一个不在Windows 8/10中工作的用户

时间:2015-10-26 08:03:37

标签: c# windows-8 permissions windows-10

我有一个程序,我使用域用户启动USMT(加载或扫描状态),该用户在本地计算机上提供管理权限。这在Windows 7中运行得非常好。

程序需要以非管理员用户身份启动,但需要以管理员权限执行load / scanstate。

然而,当正确运行load / scanstate时它会失败,因为它当前没有升高。但是,如果没有行政权利,我怎么能克服这个?

最诚挚的问候 托马斯尼森

        ProcessStartInfo restoreProcessInfo = new ProcessStartInfo
        {
            Verb = "runas",
            UseShellExecute = false,
            Domain = strAdminDomain,
            UserName = strAdminUsername,
            Password = strAdminPassword,
            FileName = loadstate.exe",
            Arguments = "blablabla"
        }

2 个答案:

答案 0 :(得分:0)

据我所知,只有当UseShellExecute设置为true时,才会尊重“runas”动词(任何动词,真的)。尝试使用WindowStyle属性隐藏shell窗口时将UseShellExecute设置为true。

但是,这会阻止您从进程中捕获输入和输出流。这是你有兴趣做的吗?

答案 1 :(得分:0)

您可以冒充用户。模拟是线程使用不同于拥有该线程的进程的不同安全信息执行的能力。

检查this主题以了解如何实施模拟。因此,最初将使用Windows域用户的权限和逻辑执行该过程,该模式将放置在模拟块中,并具有模拟用户的权限。

//Code outside the impersonation block will be executed with current user privilege

Using(Impersonator impersonator = new Impersonator())
{
  //Code written within this block will be executed with elevated(impersonated) user privilege.
}