一、文件类型(如.dwg,.123等)可以通过添加修改注册表实现
网上有很多这个注册表修改的方法,但是找了很多,都不好用,下面是自己测试可以成功的一种方法。我们用cmd命令的方式去添加.mytype文件打开格式。
1、添加打开方式应用程序设置
设置图标
REG ADD HKEY_CURRENT_USER\SOFTWARE\Classes\myApp.t\DefaultIcon /t REG_SZ /d "D:\Program Files (x86)\Microsoft Office\Office12\MSN.ICO" /f
设置路径(这个直接cmd会有权限的问题,在代码中使用可以正常使用,测试时可以手动改注册表数据)
REG ADD HKEY_CURRENT_USER\SOFTWARE\Classes\myApp.t\shell\open\command /t REG_SZ /d "D:\Program Files (x86)\Microsoft Office\Office12\WINPROJ.EXE \"%1\"" /f
2、文件类型设置打开方式
REG ADD HKEY_CURRENT_USER\Software\Classes\.mytype /t REG_SZ /d "myApp.t" /f
设置完后,我们右键(或双击) .mytype 的文件类型就可以用设置的应用程序打开了。
二、electron中我们也通过调用cmd命令去实习(也可以使用其他方式修改注册表)
const child = require('child_process')
const exec = child.exec
try{
let exePath = "D://myapp//myapp.exe";//获取exe路径 如 this.remote.process.argv[0]
let eName = "myapp.t";
let icoPath ="D://myapp//logo.png";//logo路径
writeRegedit('REG ADD HKEY_CURRENT_USER\\SOFTWARE\\Classes\\'+eName+'\\shell\\open\\command /t REG_SZ /d "\\"'+exePath+'\\" \\"%1\\"" /f');
writeRegedit('REG ADD HKEY_CURRENT_USER\\SOFTWARE\\Classes\\'+eName+'\\DefaultIcon /t REG_SZ /d "\\"'+icoPath+'\\" " /f');//logo路径
writeRegedit('REG ADD HKEY_CURRENT_USER\\Software\\Classes\\.mytype /t REG_SZ /d "'+eName +'" /f');
}
catch(e){
console.log("HKEY_CURRENT_USER Applications error")
}
function writeRegedit(cmdstr){
console.log("cmd " + cmdstr)
exec(cmdstr, {encoding: "gbk"},function (err, stdout, stderr) {
if (err) {
console.log("cmd errror" + stderr)
}
console.log("cmd success" )
})
}