我正在使用 gpedit.msc 脚本进行登录/注销/关机/启动事件。以下 PowerShell 脚本针对这些事件运行:
$web = New-Object System.Net.WebClient
[String] ${stUserDomain},[String] ${stUserAccount} = [System.Security.Principal.WindowsIdentity]::GetCurrent().Name.split("\")
$str = $web.DownloadString("https://srv4923/event.php?username=" + ${stUserAccount} + "&workstation=" + $env:ComputerName + "&event=" + $args[0])
$str
PHP 脚本然后在 MySQL 数据库中生成一个条目。该脚本适用于登录和注销事件,但对于关闭/启动事件,用户名不再是“myusername”,而是“SYSTEM”。可以通过以不同的方式获取用户名以某种方式阻止吗?我知道当启动事件被触发时,用户可能没有登录,因此没有可用的用户名。但是当用户关闭机器或重新启动机器时,我们应该仍然知道是谁做的?
至于这...
“...关闭/启动事件... myusername”不再是“系统”...
这不是 PowerShell 代码问题,而是操作系统设计要求过程。
简单的答案是否定的,因为启动时永远不会有用户。它始终是 SYSTEM 并且必须是。Windows MSGINA.dll 在系统处于就绪状态之前不会启动,然后它会为用户显示 MSGINA 登录,无论您是否决定使用自动登录。
您必须关联注销和关机事件以获取关机前最后登录的用户。
但是请记住,管理员可以远程关闭系统,就像计划任务甚至停电或电力系统浪涌一样。因此,即使存在这种相关性,您也必须牢记这一点。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句