以编程方式禁用Windows中的密码复杂性

时间:2014-02-06 12:46:55

标签: c# windows security passwords local-security-policy

我整天都在寻找答案,但没有运气。

我需要能够在独立的Windows 7 PC上禁用本地安全策略中的密码复杂性。

我已尝试使用secedit.exe编写脚本。 我也用C#搞砸了一下。

最终结果应该是一个脚本/程序,它将禁用该策略,然后在本地创建一个新的用户帐户。

1 个答案:

答案 0 :(得分:3)

经过一些扩展研究后,我发现了如何做到这一点。 在此处发布代码,以防其他人需要使用它。

string tempFile = Path.GetTempFileName();
Process p = new Process();
p.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\secedit.exe");
p.StartInfo.Arguments = String.Format("/export /cfg \"{0}\" /quiet", tempFile);
p.StartInfo.CreateNoWindow = true;
p.StartInfo.UseShellExecute = false;
p.Start();
p.WaitForExit();

StringBuilder newCfg = new StringBuilder();
string[] cfg = File.ReadAllLines(tempFile);

foreach (string line in cfg)
{
    if (line.Contains("PasswordComplexity"))
    {
        newCfg.AppendLine(line.Replace("1", "0"));
        continue;
    }
    newCfg.AppendLine(line);
}
File.WriteAllText(tempFile, newCfg.ToString());

Process p2 = new Process();
p2.StartInfo.FileName = Environment.ExpandEnvironmentVariables(@"%SystemRoot%\system32\secedit.exe");
p2.StartInfo.Arguments = String.Format("/configure /db secedit.sdb /cfg \"{0}\" /quiet", tempFile);
p2.StartInfo.CreateNoWindow = true;
p2.StartInfo.UseShellExecute = false;
p2.Start();
p2.WaitForExit();