0

我是 C# 新手,我正在尝试禁用或启用本地计算机上的用户,如下面的代码所示。我正在创建一个 exe 并提示用户输入他们想要启用或禁用的用户名。

现在我想将参数传递给命令提示符并禁用或启用用户。例如:>cmd.exe John Disable。

如何使用 c# 将参数传递给命令提示符并使用下面的相同代码来启用或禁用用户?

class EnableDisableUsers
    {
        static void Main(string[] args)
        {
                Console.WriteLine("Enter user account to be enabled or disabled");
                string user = Console.ReadLine();
                Console.WriteLine("Enter E to enable or D to disable the user account");
                string enableStr = Console.ReadLine();
                bool enable;

            if (enableStr.Equals("E") || enableStr.Equals("e"))
            {


                PrincipalContext ctx = new PrincipalContext(ContextType.Machine);

                // find a user
                UserPrincipal username = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, user);

                if (user != null)
                {
                    try
                    {
                        //Enable User
                        username.Enabled = true;
                        username.Save();
                        Console.WriteLine(user + " Enabled");
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Operation failed - Username is not valid", e.Message);
                    }
                }
                Console.ReadLine();
            }
            else if (enableStr.Equals("D") || enableStr.Equals("d"))
            {


                PrincipalContext ctx = new PrincipalContext(ContextType.Machine);

                // find a user
                UserPrincipal username = UserPrincipal.FindByIdentity(ctx, IdentityType.SamAccountName, user);

                if (user != null)
                {
                    try
                    {
                        //Disable User
                        username.Enabled = false;
                        username.Save();
                        Console.WriteLine(user + " Disabled");
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Operation failed - Username is not valid", e.Message);
                    }
                }
                Console.ReadLine();
            }
        }
    }
4

6 回答 6

1
ProcessStartInfo processStartInfo = new ProcessStartInfo();
processStartInfo.Arguments = "/c ping " + machine;
processStartInfo.FileName = "cmd.exe";
Process process = new Process();
process.StartInfo = processStartInfo;
process.Start();

这是在控制台中使用 ping 命令的示例。您可以添加其他选项,例如强制它不打开 gui 等。

于 2012-07-18T13:49:37.050 回答
0

您可以使用 Environment.CommandLine读取命令行参数或 Environment.GetCommandLineArgs()方法。

 String[] arguments = Environment.GetCommandLineArgs();
于 2012-07-18T13:50:21.423 回答
0

看看

string[] args

您的命令行参数位于字符串数组中。

于 2012-07-18T13:50:59.973 回答
0

发送到您的程序的参数存储在args

static void Main(string[] args) 
于 2012-07-18T13:51:28.313 回答
0

利用:

 switch (args[x])
 {
      .... 

  }

例如

 switch (args[x])
 {
  #region --loop
  case "--loop":               
      x = -1;
      break;
 #endregion

 #region --test-net
     case "--test-net":
          Task isAlive = Task.Factory.StartNew(() =>
          {
              bool alive = tlib.CheckForInternetConnection();
              if (!alive)
              {
                  while (!alive)
                  {
                      Console.WriteLine("No connectivity found.");
                      System.Threading.Thread.Sleep(9000);
                      alive = tlib.CheckForInternetConnection();
                  }
              }
              else
              {
                   //TODO: Add alive code here 
              }
          });
          isAlive.Wait();
          break;

          #endregion
}

这使您可以说 prog.exe --test-net 并运行该特定代码。

- 编辑 -

在这种情况下,您可以使用多个参数将命令串在一起

prog.exe --test-net --loop 

您可以拥有任意数量的参数。如果您想对 arg 使用人工输入,您始终可以控制 args 的数量并抓取 args[x+1] 以获取要禁用/启用的人的姓名。

这是假设您的案例陈述有两种情况:例如--enable 和--disable。然后你可以像这样调用程序:

prog.exe --enable John
于 2012-07-18T13:53:04.670 回答
0

这是在你的主要吗?如果是这样,您将参考 string[] args 中的命令行参数:

static void Main(string[] args)

你可以在这里看到一些例子:http: //msdn.microsoft.com/en-us/library/aa288457 (v=vs.71).aspx

于 2012-07-18T13:54:01.913 回答