从服务帐户上的脚本执行时获取准确的GPresult输出

时间:2016-05-27 13:51:05

标签: .net service group-policy local-system-account

我公司要求我为他们构建一些.NET软件(基本上是一个健康检查客户端,作为服务放在我们每台计算机上,并将加密数据报告回服务器,然后将其上传到可以使用的SQL每周报告,Web控制台等)。该程序基本完成 - 除了我认为最简单的一件事。以下是我遇到的问题:

我们需要的最后一条信息是客户最后一次使用组策略签入的信息。应该很容易......对吗?运行gpresult并从中获取日期和时间!我编写了这样做的代码,当我从自己的帐户运行它时,它运行得很好。问题是这将从服务中执行;意味着它必须在部署时作为“本地系统”帐户运行。当它作为服务从“本地系统”帐户执行时,它会出错,因为组策略(显然)不适用于本地系统帐户。我试着将范围限制在计算机上,但它仍然没有给我任何东西。

我还试图在签入时尝试查找gpupdate更改的文件,这样我就可以采用不同的方式来分析这些文件(这就是我为其他正在检查的程序所做的) ,但到目前为止,当计算机运行gpupdate时,我没有找到任何一贯改变的运气。

对我可以尝试的任何建议?我有点疯狂(短途旅行),我尝试搜索谷歌和论坛没有任何结果。

提前感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

我找到了部分答案。似乎GP存储了一个注册表项,告诉它策略是否过期(默认是90分钟签到,偏移0-30分钟)。这足以让我想要做的工作(被授予,我仍然会喜欢“详细说明”[我能说出一个字吗?]有了约会,但现在这样做了。)

对于将来看这个的人,关键是:HKLM \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Group Policy \ History \ PolicyOverdue(DWORD)。

现在我将开始使用它,但我仍然希望听到是否有人有关于我如何能够获得gpresponse工作的建议或其他方式来获取GP上次更新的日期。 :)

谢谢!