分类: 服务器与存储
2018-03-21 10:21:08
【摘要】
主要介绍通过命令行实现对AD中域安全策略读取和修改,以此来完善我们AD管理平台所缺少的组策略管理这一模块。
本文转自——学领未来
【正文】
1.Secedit 通过将当前配置与至少一个模板比较,配置和分析系统安全性。
该命令的语法如下:
参数介绍:
参数 |
说明 |
/db FileName.sdb |
指定用于进行分析的数据库 |
/cfg FileName |
指定在进行分析前要导入到数据库中的安全性模板。使用安全模板管理单元创建安全模板。 |
/log FileName |
指定记录配置进程状态的文件。如果未指定,则将配置数据记录到 %windir%\security\logs 目录下的 scesrv.log 文件。 |
/quiet |
指定分析过程不进行进一步注释。 |
2. secedit/export的语法如下:
3. secedit/import的语法如下:
以此类推,我们可以通过上面的命令查看其它几个命令的语法及其含义,在此就不在赘述,仅以表格的形式来展示。
命令 |
语法 |
说明 |
secedit /configure |
secedit /configure /db filename [/cfg filename] [/overwrite][/areas area1 area2...] [/log filename] [/quiet] |
配置组策略 |
secedit /analyze |
secedit /analyze /db filename [/cfg filename ] [/overwrite] [/log filename] [/quiet] |
允许你基于存储在数据库中的基线设置来分析当前系统设置。此分析结果将保存在数据库中的一个独立的位置,并且可以用安全配置和分析管理单元来查看。 |
secedit /import |
secedit /import /db filename /cfg filename [/overwrite][/areas area1 area2...] [/log filename] [/quiet] |
允许你导入安全模板到数据库,这样在模板中指定的设置就可以应用到系统或对系统进行分析。 |
secedit /export |
secedit /export [/db filename] [/mergedpolicy] /cfg filename [/areas area1 area2...] [/log filename] |
允许你导出保存在数据库中的安全设置。 |
secedit /validate |
secedit /validate filename |
允许你验证安全模板的语法。 |
secedit /refreshpolicy |
secedit [/configure | /analyze | /import | /export | /validate | /generaterollback] |
刷新组策略(在XP/2003下被gpupdate代替) |
1. 获取组策略
通过命令行"secedit /export /cfg c:\policy.cfg"将组策略导出到policy.cfg文件中,组策略信息如下:
2. 配置组策略
修改文件中指定的内容,然后执行命令"secedit /configure /db %windir%\security\policy.sdb /cfg c:\policy.cfg /areas SECURITYPOLICY"
来完成组策略的修改。
3. 具体实现代码
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Diagnostics;
using System.IO;
namespace CmdDemo
{
public class LocalCmd
{
//执行cmd命令
public static void ExcuteCmd(string strInput)
{
//Console.WriteLine("请输入要执行的命令:");
//strInput = Console.ReadLine();
Process p = new Process();
//设置要启动的应用程序
p.StartInfo.FileName = "cmd.exe";
//是否使用操作系统shell启动
p.StartInfo.UseShellExecute = false;
// 接受来自调用程序的输入信息
p.StartInfo.RedirectStandardInput = true;
//输出信息
p.StartInfo.RedirectStandardOutput = true;
// 输出错误
p.StartInfo.RedirectStandardError = true;
//不显示程序窗口
p.StartInfo.CreateNoWindow = true;
//启动程序
p.Start();
//向cmd窗口发送输入信息,runas /user:administrator "cmd /k"为以管理员运行
p.StandardInput.WriteLine(strInput + "&exit");
p.StandardInput.AutoFlush = true;
//获取输出信息
string strOuput = p.StandardOutput.ReadToEnd();
//等待程序执行完退出进程
p.WaitForExit();
p.Close();
Console.WriteLine(strOuput);
}
//读取文件信息
public static string ReadFile(string path)
{
FileStream fs = new FileStream(path, FileMode.Open);
StreamReader sr = new StreamReader(fs);
//string line = sr.ReadLine();//直接读取一行
string line = sr.ReadToEnd();
sr.Close();
fs.Close();
return line;
//Console.WriteLine(line);
}
//修改文件信息
public static void WriteFile(string path,string oldValue,string newValue)
{
string con = "";
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read);
StreamReader sr = new StreamReader(fs);
con = sr.ReadToEnd();
con = con.Replace(oldValue, newValue);
sr.Close();
fs.Close();
FileStream fs2 = new FileStream(path, FileMode.Open, FileAccess.Write);
StreamWriter sw = new StreamWriter(fs2);
sw.WriteLine(con);//新内容写入文件
sw.Close();
fs2.Close();
}
}
}
这里对组策略的操作主要是通过“secedit /export”和“secedit /configure”来完成的,主要实现逻辑:
1、获取组策略,导出到一个文件中;
2、对文件的内容进行修改;
3、通过“secedit /configure”命令来配置组策略,完成组策略的改写。