我自己解决了:
我制作了一个Python脚本,该脚本读取文件的前几个字节,并将它们与字典进行比较,然后根据幻数启动合适的程序。
import sys
import subprocess
magic_numbers = {
'OB': r'C:\Program Files (x86)\DesignSoft\Tina 9 - TI\TINA.EXE', # TINA
'*v': r'C:\Program Files (x86)\Orcad\Capture\Capture.exe', #PSpice
'DP': r'C:\Program Files (x86)\Design Explorer 99 SE\Client99SE.exe', #Protel
'\x00\xFE': r'C:\MentorGraphics\9.0PADS\SDD_HOME\Programs\powerlogic.exe', #PADS Logic
'\x10\x80': r'C:\Program Files (x86)\EAGLE-5.11.0\bin\eagle.exe', # Eagle
}
filename = sys.argv[1]
f = open(filename, 'rb')
# Read just enough bytes to match the keys
magic_n = f.read(max(map(len, magic_numbers)))
subprocess.call([magic_numbers[magic_n], filename])
最新版本将在此处:在适当的程序中启动歧义文件
我试图将文件扩展名与此脚本关联,但是Windows 7不允许我使用。它只是将其与Python关联,因此我进入了注册表并手动添加了脚本名称。

有改进的空间,但是可以。我可以双击具有相同.sch扩展名的不同文件,然后在不同的应用程序中打开它们。
更新:我已经使用cx_freeze将其转换为.exe,带有一个外部YAML配置文件,并且很容易关联。另请参阅此libmagic建议。不知道我是否应该把它做成一个成熟的“ Windows版libmagic启动器”,还是最好只用一个.exe和一个简单的YAML文件来处理一个文件扩展名。