Chinaunix首页 | 论坛 | 博客
  • 博客访问: 511619
  • 博文数量: 158
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 904
  • 用 户 组: 普通用户
  • 注册时间: 2016-10-10 11:17
文章分类

全部博文(158)

文章存档

2018年(74)

2017年(84)

我的朋友

分类: 服务器与存储

2018-03-21 10:21:08

【摘要】

主要介绍通过命令行实现对AD中域安全策略读取和修改,以此来完善我们AD管理平台所缺少的组策略管理这一模块。

  本文转自——学领未来

【正文】

   Secedit命令的介绍

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”命令来配置组策略,完成组策略的改写。

阅读(5466) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~