【问题标题】:What's the Hash in HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.<extension>\UserChoice?HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.<extension>\UserChoice 中的哈希是什么?
【发布时间】:2013-07-30 13:20:46
【问题描述】:

在 Windows 8 中,用户对于为给定文档类型打开哪个应用程序的选择似乎保留在

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\<extension>\UserChoice

对于我机器上的 PDF,它包含:

[HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\FileExts\.pdf\UserChoice]
"Hash"="xh8KhPWlZL0="
"ProgId"="AcroExch.Document"

然而在另一台机器上哈希是不同的。什么被散列了,有什么方法可以创建一个 .reg 文件,该文件可以应用于另一台机器来设置这个首选项?

【问题讨论】:

标签: windows windows-8 registry sysprep


【解决方案1】:

Microsoft 在 Windows 8 中决定(可能出于安全原因)用户应该能够通过内置 GUI 设置默认程序。 IE。按照设计,您不应该能够在脚本中或以编程方式设置默认处理程序。

Hash 值用于证明 UserChoice ProgId 值是由用户设置的,而不是通过任何其他方式设置的。只要 Microsoft 将生成 Hash 的算法以及使用 Hash 验证 ProgId 的机制保密。

理论上您可以找出设置哈希的秘密(可能还有其他隐藏的操作系统设置),但您无法保证它的可靠性;例如,下一个 Windows 更新可能会破坏您的方法。您可能只需要适应这种变化,并使用 Microsoft 内置在操作系统中的新方法。

【讨论】:

  • 这很可悲。根据另一个答案 - 安全原因不起作用,哈希证明什么都没有。明显地。但现在我们有过于复杂的疯狂。谢谢,微软。
【解决方案2】:

有人对哈希进行逆向工程并编写了一个 CLI 工具来设置文件关联:

http://kolbi.cz/blog/?p=346

extension = “.txt”; the file extension
sid = “S-1-5-21-463486358-3398762107-1964875780-1001” ; the SID of the current user
progid = “txtfile”; the ProgId of the desired association
regdate = “01d3442a29887400”; timestamp of the UserChoice registry key
experience = “a microsoft secret string”; a static string (this is a dummy example, not the real string
hash = Base64(MicrosoftHash(MD5(toLower(extension, sid, progid, regdate, experience))))

并未透露所有细节,但可能足以对其余部分进行逆向工程。

【讨论】:

【解决方案3】:

顺便说一句,配置文件中的这些用户选择哈希在 sysprep 后变得无效,导致在 sysprep 后第一次登录期间所有那些“应用程序默认已重置”消息,以及 Microsoft-Windows-Shell-Core/ 中的许多日志条目应用默认值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 1970-01-01
    相关资源
    最近更新 更多