c# Process Classの使用を検討する必要があります。WMI を使用するよりもはるかに高速です。
このようにユーザー名とパスワードの資格情報を渡すことができます。これは、私が以前に作成したクラスです。
class Logon : Process
{
internal Logon(string filename, string username, string passwordtxt, string argument)
{
StartInfo.Domain = "Your-Domain";
StartInfo.FileName = filename;
StartInfo.UserName = username;
StartInfo.Password = GetSecurePassword(passwordtxt);
StartInfo.UseShellExecute = false;
StartInfo.Arguments = argument;
StartInfo.LoadUserProfile = true;
}
public System.Security.SecureString GetSecurePassword(string passwordtxt)
{
SecureString SS = new SecureString();
foreach (char PSW in passwordtxt)
{
SS.AppendChar(PSW);
}
return SS;
}
}
アプリには次のものがあります。
public void verifyuser(string filename, string argument)
{
try
{
var logon = new SecureLogon(
filename, txtuser.Text, txtpassword.Text, argument);
logon.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message,"Notification");
}
}