强制控制台应用程序使用特定帐户运行

时间:2015-01-20 16:28:51

标签: c# security visual-studio-2012

我有一个使用C#在VS2012中构建的控制台应用程序。 EXE位于共享驱动器上,可由任何用户运行,但我始终希望EXE使用我们在AD中设置的特定系统帐户运行。基本上,我想以编程方式模仿右键单击EXE并执行" Run As ..."而不是在启动它的当前用户下运行。

如何强制我的代码始终在特定帐户/密码下运行?

1 个答案:

答案 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);  
        }
    }
}