修改审核策略(组策略)
Modify audit policy (group policy)
我想用 vb.net 更改对象审核策略。比如启用对象访问审计。那可能吗?如果没有,powershell 是一种选择吗?我知道我可以在 Windows 的任何版本上获得 gpedit 运行,但我希望能够以编程方式更改设置。
此外,我知道注册表可以更改某些设置,但我还没有看到有关审核策略的设置。
http://www.lshift.net/blog/2013/03/25/programmatically-updating-local-policy-in-windows/
我找到了这个,但稍后会试一试。
更新:可以通过 VB(或可能任何其他语言)导入,但使用 REG IMPORT。确保将 .REG 文件放在系统可以访问的位置(系统不具有与管理员相同的权限)。您必须启动一个 运行 作为系统的单独应用程序,并在加载时导入注册表项。您可以使用来自 Sysinternals 的 PSTools (psexec) 作为系统 运行。您也可以通过创建服务、运行 服务、然后删除服务来完成此操作:Running application as System (without PSTools)
我意识到所有我认为是答案的 link 都不是。他们都更改了审核策略选项卡,我已经可以通过编程方式进行更改。我要更改的是全局审核策略,它仅在组策略中可用(gpedit.msc)。当然,您可以在 Windows 的任何版本上 "install",但我想要一个不需要最终用户必须设置它的解决方案(也就是不使用 gpedit.msc)。
我知道 Process Monitor 几乎可以监控后台发生的任何事情,我评论中的一个 link 也在使用 Process Monitor(我的 OP 的评论)。所以,我认为那真的是我唯一的方法。自然地,您会认为 mmc.exe 是要寻找的那个,但事实并非如此。它执行 TON 的注册表 open/query/enum/closes。但是,没有设置或删除。我决定在大块 mmc 操作之前和之后稍微看一下(好吧,当然还有两者之间的任何地方)。任何不是 mmc 但在确切时间范围内发生的事情。我发现 lsass 做了一些设置和删除。它正在更改系统拥有的注册表项的值。我使用 PSTools 运行 将注册表编辑为系统,这样我就可以访问密钥。然后我使用 gpedit 来回切换(从无审计到成功),发现它总是设置相同的值(比如 0 表示关闭,1 表示打开)。我在 gpedit 中更改值时导出密钥,然后导入它们进行测试。我可以通过在导入后重新打开 gpedit 来确认它是否有效,并且值会发生变化。我还可以通过在文件夹上启用审核并在事件查看器中查看日志来确认。
tl;博士
HKEY_LOCAL_MACHINE\SECURITY\Policy\PolAdtEv\(Default)
就是你想要的
- Download the .reg files here
- 运行 这在提升的命令提示符中:
psexec -i -s regedit
- 导入你需要的.reg文件。
- 通过重新打开 gpedit.msc 并检查事件查看器(安全)来确认
不信任 .reg 文件?如果您想自己创建这些值,这里是您的值。值类型是 REG_NONE,所以 @=hex(0)
.
无审核:00010000090000007e00000001000000030000000300010001000100000001000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000001000000010000000000000000000000000000000000000000000000fe7f05000a000e00030004000600060004000400
成功:00010000090000007e00000001000000030000000300010001000100000001000000000000000300000001000100010001000100010001000100010001000100010001000100000000000000000000000000000001000100000000000000000001000000010000000000000000000000000000000000000000000000fe7f05000a000e00030004000600060004000400
我想用 vb.net 更改对象审核策略。比如启用对象访问审计。那可能吗?如果没有,powershell 是一种选择吗?我知道我可以在 Windows 的任何版本上获得 gpedit 运行,但我希望能够以编程方式更改设置。
此外,我知道注册表可以更改某些设置,但我还没有看到有关审核策略的设置。
http://www.lshift.net/blog/2013/03/25/programmatically-updating-local-policy-in-windows/
我找到了这个,但稍后会试一试。
更新:可以通过 VB(或可能任何其他语言)导入,但使用 REG IMPORT。确保将 .REG 文件放在系统可以访问的位置(系统不具有与管理员相同的权限)。您必须启动一个 运行 作为系统的单独应用程序,并在加载时导入注册表项。您可以使用来自 Sysinternals 的 PSTools (psexec) 作为系统 运行。您也可以通过创建服务、运行 服务、然后删除服务来完成此操作:Running application as System (without PSTools)
我意识到所有我认为是答案的 link 都不是。他们都更改了审核策略选项卡,我已经可以通过编程方式进行更改。我要更改的是全局审核策略,它仅在组策略中可用(gpedit.msc)。当然,您可以在 Windows 的任何版本上 "install",但我想要一个不需要最终用户必须设置它的解决方案(也就是不使用 gpedit.msc)。
我知道 Process Monitor 几乎可以监控后台发生的任何事情,我评论中的一个 link 也在使用 Process Monitor(我的 OP 的评论)。所以,我认为那真的是我唯一的方法。自然地,您会认为 mmc.exe 是要寻找的那个,但事实并非如此。它执行 TON 的注册表 open/query/enum/closes。但是,没有设置或删除。我决定在大块 mmc 操作之前和之后稍微看一下(好吧,当然还有两者之间的任何地方)。任何不是 mmc 但在确切时间范围内发生的事情。我发现 lsass 做了一些设置和删除。它正在更改系统拥有的注册表项的值。我使用 PSTools 运行 将注册表编辑为系统,这样我就可以访问密钥。然后我使用 gpedit 来回切换(从无审计到成功),发现它总是设置相同的值(比如 0 表示关闭,1 表示打开)。我在 gpedit 中更改值时导出密钥,然后导入它们进行测试。我可以通过在导入后重新打开 gpedit 来确认它是否有效,并且值会发生变化。我还可以通过在文件夹上启用审核并在事件查看器中查看日志来确认。
tl;博士
HKEY_LOCAL_MACHINE\SECURITY\Policy\PolAdtEv\(Default)
就是你想要的- Download the .reg files here
- 运行 这在提升的命令提示符中:
psexec -i -s regedit
- 导入你需要的.reg文件。
- 通过重新打开 gpedit.msc 并检查事件查看器(安全)来确认
不信任 .reg 文件?如果您想自己创建这些值,这里是您的值。值类型是 REG_NONE,所以 @=hex(0)
.
无审核:00010000090000007e00000001000000030000000300010001000100000001000000000000000300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100000000000000000001000000010000000000000000000000000000000000000000000000fe7f05000a000e00030004000600060004000400
成功:00010000090000007e00000001000000030000000300010001000100000001000000000000000300000001000100010001000100010001000100010001000100010001000100000000000000000000000000000001000100000000000000000001000000010000000000000000000000000000000000000000000000fe7f05000a000e00030004000600060004000400