主要问题是Windows将来会像下面的方法一样禁用修改用户密码,我需要在这种方法旁边获得其他方法。
static void batchCMD(string user, string newPass)
{
try
{
Process cmdProcess = new Process();
cmdProcess.StartInfo.FileName = "cmd.exe";
if (System.Environment.OSVersion.Version.Major >= 6)
{
cmdProcess.StartInfo.Verb = "runas";
}
cmdProcess.StartInfo.CreateNoWindow = true;
cmdProcess.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
cmdProcess.StartInfo.WorkingDirectory = Directory.GetCurrentDirectory();
cmdProcess.StartInfo.Arguments = "/c net user " + user + " " + newPass;
cmdProcess.Start();
cmdProcess.WaitForExit(10000);
return;
}
catch (Exception)
{
throw;
}
finally
{
File.WriteAllText(@"C:temptxt.log", DateTime.Now + " " + "HIUHIUHIUH" + "n");
}
}
如果您有其他更好的解决方案,请与我分享。
使用 Win32 NetUserChangePassword
函数:https://learn.microsoft.com/en-us/windows/desktop/api/lmaccess/nf-lmaccess-netuserchangepassword
C# P/Invoke 签名可在此处获得:https://www.pinvoke.net/default.aspx/netapi32.netuserchangepassword
[DllImport( "netapi32.dll", CharSet = CharSet.Unicode, CallingConvention = CallingConvention.StdCall, SetLastError = true )]
static extern UInt32 NetUserChangePassword
(
[MarshalAs( UnmanagedType.LPWStr )] String domainName,
[MarshalAs( UnmanagedType.LPWStr )] String userName,
[MarshalAs( UnmanagedType.LPWStr )] String oldPassword,
[MarshalAs( UnmanagedType.LPWStr )] String newPassword
);