使用 Java 更改文件关联
Changing file associations using Java
我了解到您可以使用 assoc .pmdtb="X:\PassswordManager.bat"
等命令更改 Windows 文件关联,但我仍然遇到一些问题。
当我在命令行中运行命令时,什么都没有改变。具有此扩展名的文件仍可使用记事本打开。
当我尝试 运行 Java 中的命令时,我被拒绝访问。
如何在 Java 中编辑 Windows 内部文件关联?如果我宁愿直接编辑注册表,那么多个 类 目录中的哪一个?
我的Java代码:
Runtime.getRuntime().exec("cmd.exe /c assoc .pmdtb=\"X:\PasswordManager.bat\"");
// --> Access denied.
提前致谢。
从assoc
和ftype
开始的Windows显然无法更改文件关联 8. 注册表中还有一个哈希码,它是用秘密算法生成的.如果我更改文件关联,但哈希不匹配,则默认打开此文件扩展名不会更改。哈希的 Windows 算法已被逆向工程。基于此,您可以将算法转换为Java并直接更改注册表。
可以在此处找到带有 QT 的 C++ 代码:https://pastebin.com/yVhWeQ3X
到目前为止,最简单的方法是使用多种 FTA 实用程序之一来为您解析安全散列。
然后通过来自您的 java 应用程序的 cmd 行调用使用它
您可能需要测试这些选项(阅读上面链接页面上的评论并查看 issues on github),但它可以像
一样简单
SFTA.exe --reg "X:\PassswordManager.bat" "pmdtb"
我了解到您可以使用 assoc .pmdtb="X:\PassswordManager.bat"
等命令更改 Windows 文件关联,但我仍然遇到一些问题。
当我在命令行中运行命令时,什么都没有改变。具有此扩展名的文件仍可使用记事本打开。
当我尝试 运行 Java 中的命令时,我被拒绝访问。
如何在 Java 中编辑 Windows 内部文件关联?如果我宁愿直接编辑注册表,那么多个 类 目录中的哪一个?
我的Java代码:
Runtime.getRuntime().exec("cmd.exe /c assoc .pmdtb=\"X:\PasswordManager.bat\"");
// --> Access denied.
提前致谢。
从assoc
和ftype
开始的Windows显然无法更改文件关联 8. 注册表中还有一个哈希码,它是用秘密算法生成的.如果我更改文件关联,但哈希不匹配,则默认打开此文件扩展名不会更改。哈希的 Windows 算法已被逆向工程。基于此,您可以将算法转换为Java并直接更改注册表。
可以在此处找到带有 QT 的 C++ 代码:https://pastebin.com/yVhWeQ3X
到目前为止,最简单的方法是使用多种 FTA 实用程序之一来为您解析安全散列。
然后通过来自您的 java 应用程序的 cmd 行调用使用它
您可能需要测试这些选项(阅读上面链接页面上的评论并查看 issues on github),但它可以像
一样简单SFTA.exe --reg "X:\PassswordManager.bat" "pmdtb"