gpt4 book ai didi

windows - 如何创建行为类似于 .cmd/.bat 的文件扩展名?

转载 作者:可可西里 更新时间:2023-11-01 09:25:26 25 4
gpt4 key购买 nike

我想这是一个奇怪的问题。但我很好奇。这是我到目前为止尝试过的: 我已经导出并比较了 [HKEY_CLASSES_ROOT\batfile] ,[HKEY_CLASSES_ROOT\cmdfile],[HKEY_CLASSES_ROOT\.bat],[HKEY_CLASSES_ROOT\.cmd] .我注意到的唯一区别是 HKEY_CLASSES_ROOT\*\FrienflyTypeName 这假设对它们的执行并不重要。所以我创建了一个具有相同数据的注册表值以获得所需的扩展(我正在尝试创建 .scjs 文件扩展名):

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.scjs]
@="scjsfile"
#this says that the file will contains text
[HKEY_CLASSES_ROOT\.scjs\PersistentHandler]
@="{5e941d80-bf96-11cd-b579-08002b30bfeb}"

[HKEY_CLASSES_ROOT\scjsfile]
@="Windows Batch File"
"EditFlags"=hex:30,04,00,00
"FriendlyTypeName"=hex(2):40,00,25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,\
00,6f,00,6f,00,74,00,25,00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,\
32,00,5c,00,61,00,63,00,70,00,70,00,61,00,67,00,65,00,2e,00,64,00,6c,00,6c,\
00,2c,00,2d,00,36,00,30,00,30,00,32,00,00,00

[HKEY_CLASSES_ROOT\scjsfile\DefaultIcon]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,69,00,6d,00,\
61,00,67,00,65,00,72,00,65,00,73,00,2e,00,64,00,6c,00,6c,00,2c,00,2d,00,36,\
00,38,00,00,00

[HKEY_CLASSES_ROOT\scjsfile\shell]

[HKEY_CLASSES_ROOT\scjsfile\shell\edit]

[HKEY_CLASSES_ROOT\scjsfile\shell\edit\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\
54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,25,00,31,00,00,\
00

#copied from batfile from HKEY_CLASSES_ROOT .Same as cmdfile reg values
[HKEY_CLASSES_ROOT\scjsfile\shell\open]
"EditFlags"=hex:00,00,00,00

[HKEY_CLASSES_ROOT\scjsfile\shell\open\command]
@="\"%1\" %*"

[HKEY_CLASSES_ROOT\scjsfile\shell\print]

[HKEY_CLASSES_ROOT\scjsfile\shell\print\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,4e,00,4f,00,\
54,00,45,00,50,00,41,00,44,00,2e,00,45,00,58,00,45,00,20,00,2f,00,70,00,20,\
00,25,00,31,00,00,00

[HKEY_CLASSES_ROOT\scjsfile\shell\runas]
"HasLUAShield"=""

[HKEY_CLASSES_ROOT\scjsfile\shell\runas\command]
@=hex(2):25,00,53,00,79,00,73,00,74,00,65,00,6d,00,52,00,6f,00,6f,00,74,00,25,\
00,5c,00,53,00,79,00,73,00,74,00,65,00,6d,00,33,00,32,00,5c,00,63,00,6d,00,\
64,00,2e,00,65,00,78,00,65,00,20,00,2f,00,43,00,20,00,22,00,25,00,31,00,22,\
00,20,00,25,00,2a,00,00,00

[HKEY_CLASSES_ROOT\scjsfile\shell\runasuser]
@="@shell32.dll,-50944"
"Extended"=""
"SuppressionPolicyEx"="{F211AA05-D4DF-4370-A2A0-9F19C09756A7}"

[HKEY_CLASSES_ROOT\scjsfile\shell\runasuser\command]
"DelegateExecute"="{ea72d00e-4960-42fa-ba92-7792a7944c1d}"

[HKEY_CLASSES_ROOT\scjsfile\ShellEx]

[HKEY_CLASSES_ROOT\scjsfile\ShellEx\ContextMenuHandlers]
@="Compatibility"

[HKEY_CLASSES_ROOT\scjsfile\ShellEx\ContextMenuHandlers\Compatibility]
@="{1d27f844-3a1f-4410-85ac-14651078412d}"

[HKEY_CLASSES_ROOT\scjsfile\ShellEx\ContextMenuHandlers\OpenGLShExt]
@="{E97DEC16-A50D-49bb-AE24-CF682282E08D}"

[HKEY_CLASSES_ROOT\scjsfile\ShellEx\DropHandler]
@="{86C86720-42A0-1069-A2E8-08002B30309D}"

[HKEY_CLASSES_ROOT\scjsfile\ShellEx\PropertySheetHandlers]

[HKEY_CLASSES_ROOT\scjsfile\ShellEx\PropertySheetHandlers\ShimLayer Property Page]
@="{513D916F-2A8E-4F51-AEAB-0CBC76FB1AF8}"

[HKEY_CLASSES_ROOT\scjsfile\ShellEx\{8895b1c6-b41f-4c1c-a562-0d564250836f}]
@="{1531d583-8375-4d3f-b5fb-d23bbd169f22}"

我还向 PATEXT 变量添加了值 (.SCJS) -> .COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF; .WSH;.MSC;.SCJS

但是当我运行该文件时,我得到:test.scjs 不是有效的 Win32 应用程序。访问被拒绝。

所以这甚至是可能的?还有什么我应该改变的吗?

EDIT :我找到的最佳解决方案:对于我使用的公开 key :

[HKEY_CLASSES_ROOT\scjsfile\shell\open\command]
@="%SystemRoot%\\System32\\caller.bat \"%1\" \"%*\""

我在 system32 中有 caller.bat 的地方:

@echo off
copy "%~nx1" "%temp%\%~nx1.bat" /Y >nul
"%temp%\%~nx1" .bat %~2

希望简单地 cmd/c 更难管理参数。目前看来没有办法处理命令行参数。

再编辑:处理命令行参数的一种方法是使用 [HKEY_CLASSES_ROOT\scjsfile\shell\open\Run] 而不是 [ HKEY_CLASSES_ROOT\scjsfile\shell\open\command]。我不知道现在到底有什么区别,但它有效(我从我的 AutoIT 安装中看到了这个:-))。

最佳答案

虽然这已经被接受,但我想我会在我的答案中添加我一起破解的内容。

我创建了自己的文件扩展名 .bali,我可以在其中放置一些批处理命令并通过打开文件来运行它们。

.bali 注册表导出如下所示

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\.bali]
@="BaliFile"

注意这个值不能有空格(如果它被引用可能有效,但没有尝试过)。

balifile 注册表导出如下所示

Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\balifile]

[HKEY_CLASSES_ROOT\balifile\DefaultIcon]
@="%SystemRoot%\\System32\\imageres.dll,-68"

[HKEY_CLASSES_ROOT\balifile\shell]

[HKEY_CLASSES_ROOT\balifile\shell\open]

[HKEY_CLASSES_ROOT\balifile\shell\open\command]
@="cmd.exe /c for /f \"delims=\" %%a in (%1) do %%a"

我的 file.bali 看起来像这样

echo hello bali
pause

该文件也会有 cmd 图标,运行时会运行提示符中的命令,显然输出 hello bali

这限制了您可以使用的内容,例如您不能使用变量,但您可以自己进行试验以找出您可以做什么和不能做什么。

不确定这是否是您要找的东西,但无论如何制作起来都很有趣:)

关于windows - 如何创建行为类似于 .cmd/.bat 的文件扩展名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13581987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com