我是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();
}
}
}
答案 0 :(得分: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等。
答案 1 :(得分:0)
您可以使用Environment.CommandLine
来读取命令行参数或Environment.GetCommandLineArgs()方法。
String[] arguments = Environment.GetCommandLineArgs();
答案 2 :(得分:0)
看看
string[] args
您的命令行参数位于字符串数组中。
答案 3 :(得分:0)
发送到您的程序的参数存储在args
static void Main(string[] args)
答案 4 :(得分: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并运行该特定代码。
- 编辑 -
使用多个args,您可以将命令串在一起,在本例中为
prog.exe --test-net --loop
你可以拥有任意数量的args。如果你想为arg使用人工输入,你总是可以控制args的数量并抓住args [x + 1]来获取要禁用/启用的人的名字。
这假设您的案例陈述有两种情况:例如--enable和--disable。然后你可以调用程序,如:
prog.exe --enable John
答案 5 :(得分:0)
这是在你的主?如果是这样,您将引用字符串[] args:
中的命令行参数static void Main(string[] args)
您可以在此处查看一些示例:http://msdn.microsoft.com/en-us/library/aa288457(v=vs.71).aspx