我有一个使用C#在VS2012中构建的控制台应用程序。 EXE位于共享驱动器上,可由任何用户运行,但我始终希望EXE使用我们在AD中设置的特定系统帐户运行。基本上,我想以编程方式模仿右键单击EXE并执行" Run As ..."而不是在启动它的当前用户下运行。
如何强制我的代码始终在特定帐户/密码下运行?
答案 0 :(得分:1)
我为我的一个应用程序写了这个。希望它可以帮到你;)
public partial class App : Application
{
protected override void OnStartup(StartupEventArgs e)
{
// Launch itself as administrator
ProcessStartInfo proc = new ProcessStartInfo();
// this parameter is very important
proc.UseShellExecute = true;
proc.WorkingDirectory = Environment.CurrentDirectory;
proc.FileName = Assembly.GetEntryAssembly().Location;
// optional. Depend on your app
proc.Arguments = this.GetCommandLine();
proc.Verb = "runas";
proc.UserName = "XXXX";
proc.Password = "XXXX";
try
{
Process elevatedProcess = Process.Start(proc);
elevatedProcess.WaitForExit();
exitCode = elevatedProcess.ExitCode;
}
catch
{
// The user refused the elevation.
// Do nothing and return directly ...
exitCode = -1;
}
// Quit itself
Environment.Exit(exitCode);
}
}
}