有没有其他方法可以更改Windows本地用户密码,因为这个/c网络用户" + 用户 + " " + newPass;通过 C#



主要问题是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
);

最新更新