1、简介
当自己需要打开自己的自定义文件,需要先打开软件,然后再加载相应的工程文件这样的繁琐操作,故添加文件关联
2、代码
void regedit_new(QString appPath,QString className,QString ext,QString extDes)
{
QString baseUrl("HKEY_CURRENT_USER\\Software\\Classes"); // 要添加的顶层目录
QSettings settingClasses(baseUrl, QSettings::NativeFormat);
settingClasses.setValue("/" + className + "/Shell/Open/Command/.", "\"" + appPath + "\" \"%1\"");
settingClasses.setValue("/" + className + "/.", extDes);
settingClasses.setValue("/" + className + "/DefaultIcon/.", appPath + ",0");
// 关联ext 和 类别
settingClasses.setValue("/" + ext + "/OpenWithProgIds/" + className, "");
// 立即保存该修改
settingClasses.sync();
}
MainWindow::MainWindow(QWidget *parent) :
QMainWindow(parent),
ui(new Ui::MainWindow)
{
ui->setupUi(this);
QString app_path = qApp->applicationFilePath();
/* 一定要将此路径转换为"\\"形式,因为qt默认识别的是"/",windows并不识别 */
app_path = app_path.split("/").join("\\");
qDebug() << app_path;
QString className("file1"); // 自定义的类别
QString ext(".com1"); // 关联的文件类型
QString extDes(" 自定义文件");
regedit_new(app_path,className,ext,extDes);
className = ("file2");
ext = (".com2");
regedit_new(app_path,className,ext,extDes);
}
3、问题记录
3.1、"Windows无法访问指定设备、路径或文件"
确定程序的路径是"\\"而不是"/"
或者
去指定程序的路径运行此程序,确定程序能正常运行