我想知道是否有办法找出用户上次远程打开或使用 Google Chrome 浏览器的时间(即通过 PowerShell 或注册表项)。
我知道
HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall
和
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\UserAssist
并且一些其他注册表项可以提供有用的信息,例如安装数据,但它没有上次使用属性。
控制面板中有一列“上次使用时间”,但是此信息存储在哪里?
答案1
添加/删除程序如何获取大小和其他信息?
如果程序本身不提供此信息,则“添加/删除程序”将被迫进行猜测。
如果程序本身不提供此信息,则“添加/删除程序”将被迫进行猜测。
问题是没有“明显”的方法将“添加/删除程序”列表中的条目映射到实际程序。对于那些关心这些事情的人来说,列表中的每个条目都来自注册表项
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall
。可卸载程序的唯一必需属性是
DisplayName
和UninstallPath
。其他所有属性都是可选的。假设“添加/删除程序”有这样的程序注册:
键值对_LOCAL_MACHINE\ 软件\ 微软\ 视窗\ 当前版本\ 卸载\ 一些程序 DisplayName=REG_SZ:“适用于 Windows 的超棒程序” 卸载路径=REG_SZ:"C:\WINDOWS\uninstall.exe -SomeParameters"
为了获取“上次使用”和“频率”值,“添加/删除程序”需要知道 EXE 的名称,以便它可以询问“开始”菜单“嘿,用户运行该程序的频率是多少,上次运行是什么时候?”
请注意,上面的注册中没有关于此 EXE 文件身份的线索。
因此“添加/删除程序”开始猜测。它会检查“开始”菜单上的所有程序,并将它们的名称与可卸载项目的显示名称进行比较。它会查找与 DisplayName 中的单词至少有两个相同单词的“开始”菜单项。
例如,如果有一个名为“Pretty Decent Windows Program”的“开始”菜单项,这将算作两个词的匹配(“Windows”和“Program”)。
然后,它会选择匹配次数最多的那个,并决定“好吧,我想就是这个了。”为了便于说明,假设最佳匹配确实是“Pretty Decent Windows Program.lnk”,它是“C:\Program Files\LitWare\Decent Program\Decent.exe”的快捷方式。添加/删除程序会决定“Awesome Program for Windows”应该获得“Pretty Decent Windows Program.lnk”的图标,并且“C:\Program Files\LitWare\Decent Program\Decent.exe”的使用频率和最近使用的信息将显示在“Awesome Program for Windows”中。
但等等,还有更多。还有程序大小。添加/删除程序会在“Program Files”目录中查找名称至少有两个与 DisplayName 相同的单词的目录。最佳匹配项被认为是程序文件安装到的目录。大小加在一起并报告为“Awesome Program for Windows”的大小。
程序可以在其注册中添加一些属性,以避免大量的猜测。它可以设置一个 EstimatedSize 属性,以避免让添加/删除程序猜测程序的大小。它还可以设置一个 DisplayIcon 属性来指定在列表中为程序显示哪个图标。
但是如果程序忽略了所有这些提示,那么由于巧合的单词匹配,添加/删除程序最终做出的猜测往往会大错特错。根据我的经验,西班牙语尤其受此算法的影响,因为该语言大量使用介词和冠词(这会导致大量错误匹配)。
是的,这一切都很蹩脚,但是当你被迫在信息不充分的情况下进行操作时,蹩脚就是你能做的最好的事情。