首页 > 解决方案 > 以其他用户身份启动后台进程而不显示窗口

问题描述

我想使用特定的用户帐户从控制台启动应用程序,但不显示窗口。我已经阅读了有关此主题的多篇 Stack Overflow 文章,但建议的解决方案似乎都不适合我。我可以启动应用程序,但我无法阻止在传递用户名/密码时弹出窗口。

我设法让以下代码在我的计算机(Windows 10)上运行,但它无法在目标计算机(Windows 7)上运行。

目标框架:.NET 4.5.2

代码在使用输出类型Console Application的无窗口 WPF 应用程序中执行,因为普通的控制台应用程序无法工作。

private void StartProcess(string appPath, string user, SecureString password, string domain)
{
    var processStartInfo = new ProcessStartInfo
    {
        FileName = appPath,
        WorkingDirectory = Path.GetDirectoryName(appPath),
        CreateNoWindow = true,
        UseShellExecute = false,
        WindowStyle = ProcessWindowStyle.Hidden,
        Password = password,
        UserName = user,
        Domain = domain,
        RedirectStandardError = false,
        RedirectStandardOutput = false
    };

    Process.Start(processStartInfo);
}

我的应用程序将从控制台启动,目标也是一个控制台应用程序。

如何确保进程在后台运行,而在 Windows 7 下不出现窗口?

部分文章:

标签: c#

解决方案


你可以试试这个:

private void StartProcess(string appPath, string user, SecureString password, string domain)
{
    var processStartInfo = new ProcessStartInfo
    {
        FileName = appPath,
        WorkingDirectory = Path.GetDirectoryName(appPath),
        CreateNoWindow = true,
        UseShellExecute = false,
        WindowStyle = ProcessWindowStyle.Hidden,
        RedirectStandardOutput = false,
        RedirectStandardError = false,
        Verb = string.Format("runas /user:{0}\\{1} /password:{2}", domain, user, password)
    };
    Process.Start(processStartInfo);
}

推荐阅读