【问题标题】:Is there any other way to change windows local user password beseide this one /c net user " + user + " " + newPass; via C# [duplicate]除了这个 /c net user "+ user + " " + newPass; 通过 C# [重复]
【发布时间】:2019-06-13 13:35:14
【问题描述】:

主要问题是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:\temp\txt.log", DateTime.Now + " " + "HIUHIUHIUH" + "\n");
        }
    }

如果您有其他更好的解决方案,请与我分享。

【问题讨论】:

  • 我不确定,但如果你不能通过 PowerShell 完成,我会感到惊讶,也许查一下
  • Windows 将来会禁止像这样修改用户密码。你在哪里读到的?
  • 你做过任何研究吗?您似乎可以通过简单的 Google 搜索很快找到答案。
  • @dotNET NET 命令行程序在最近的 Windows 版本中删除或弃用了许多功能,因此可以合理地假设 Windows 的命令行界面不如Win32 API。示例包括net namenet printnet sendnet start/stop 等。
  • @Dai 那仍然没有回答 dotNET 的问题。

标签: c#


【解决方案1】:

使用Win32 NetUserChangePassword函数:https://docs.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
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-08-01
    • 2015-02-24
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多