【发布时间】:2015-07-08 01:58:49
【问题描述】:
我有一个运行 Elevated 的程序。从这个程序我启动其他可执行文件。
现在默认情况下,我创建的任何进程都将运行 Elevated。因此,对于它运行的某些程序,我希望它们像没有被提升一样运行,就像登录的标准用户一样。
Elevated 主程序正在登录用户的用户帐户下运行。
这就是我尝试的方法
var psi = new ProcessStartInfo(Exe.GetExePath());
psi.UseShellExecute = false;
psi.RedirectStandardError = false;
psi.RedirectStandardInput = false;
psi.RedirectStandardOutput = false;
psi.WorkingDirectory = Exe.Version.GetInstallPath();
if(Exe.Elevated == false)
{
psi.UserName = Global.Username;
var pass = new SecureString();
Global.Password.ToCharArray().ToList().ForEach(p => pass.AppendChar(p));
psi.Password = pass;
}
Process = Process.Start(psi);
这行得通,因为在启动的程序中没有提升。但是,由于某些奇怪的原因,它此时无法访问所有映射的网络驱动器。
我什至尝试在启动的应用程序中执行类似Impersonating a Windows user 的操作,但它也不起作用。
所以我想我想知道,我怎样才能重新获得对这些映射驱动器的访问权限(所有应用程序都在正确的用户下运行)。
【问题讨论】:
-
您的主要提升程序是 Windows 服务吗?
-
不抱歉,正如我提到的,这两个程序都以登录用户的身份运行。只是程序被提升了。
-
当您以提升用户身份运行“net use”时,返回的是什么?
标签: c#