c#的过程.从另一个不使用Windows 8/10的用户开始
本文关键字:用户 开始 Windows 过程 另一个 | 更新日期: 2023-09-27 18:19:24
我有一个程序,我用一个域用户启动USMT(加载或扫描状态),该域用户在本地计算机上具有管理权限。
程序需要以非管理员用户启动,但以管理员权限执行load/scanstate。
然而,当正确运行load/scanstate时失败,因为它当前没有提升。但是,在没有管理权的情况下,我怎样才能克服这一点呢?
致以最亲切的问候托马斯·尼森
ProcessStartInfo restoreProcessInfo = new ProcessStartInfo
{
Verb = "runas",
UseShellExecute = false,
Domain = strAdminDomain,
UserName = strAdminUsername,
Password = strAdminPassword,
FileName = loadstate.exe",
Arguments = "blablabla"
}
据我所知,"runas"动词(任何动词,真的)只有在UseShellExecute设置为true时才受到尊重。尝试将UseShellExecute设置为true,同时使用WindowStyle属性隐藏shell窗口。
然而,这将阻止您从流程中捕获输入和输出流。这是你感兴趣的事情吗?您可以模拟用户。模拟是线程使用与拥有该线程的进程不同的安全信息执行的能力。
检查此线程以了解如何实现模拟。因此,进程最初将以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.
}