在远程计算机上启动进程c#

时间:2013-10-18 17:37:52

标签: c# windows security wmi impersonation

我正在使用以下代码在远程计算机上启动进程。它确实启动了该过程,但它在Admin用户下运行,而不是在登录的当前用户下运行。我需要当前用户能够与该程序进行交互。如果我在我的代码而不是管理员中使用他们的凭证,那么我将拒绝访问。如何指定在用户“JohnDoe”下运行?我知道PSSuite是一个选项,但如果可能的话我宁愿使用ManagementScope类。

 class Program
{
    static void Main(string[] args)
    {

       try
        {
            object[] theProcessToRun = { "notepad.exe" };               
            ConnectionOptions theConnection = new ConnectionOptions();

            theConnection.Username = @"MyDomain\Admin";
            theConnection.Password = "mypassword";               
            ManagementScope theScope = new ManagementScope("\\\\" + "BMBM14" + "\\root\\cimv2", theConnection);
            ManagementClass theClass = new ManagementClass(theScope, new ManagementPath("Win32_Process"), new ObjectGetOptions());
            theClass.InvokeMethod("Create", theProcessToRun);
            Console.WriteLine("Success");

        }
        catch (Exception ex)
        {
            Console.WriteLine(ex.ToString());
            Console.ReadLine();

        }
        Console.ReadLine();
    }
}

0 个答案:

没有答案