如何在我的程序中打开特定的文件扩展名
How can I make specific file extension open in my program
我用 C# 创建了一个简单的程序,它将数据保存到一个具有自定义扩展名的文件中。
文件可以保存在用户PC的任意位置,用户可以每次加载不同的数据文件。
我已将程序构建到 exe 文件中,并使用第 3 方安装程序部署它。
安装程序基本上将 exe 文件及其依赖项打包到一个安装 exe 文件中,用户可以 运行
当用户运行安装文件时,基本安装开始:接受许可,select安装路径...
程序及其依赖项被解压到 selected 安装路径。
现在我想关联我用于我的程序的自定义文件扩展名,以便始终在我的程序中打开。
我找到的最简单的解决方案是在我的程序安装后使用 运行s 的 bat 文件(这是由第 3 方安装程序处理的,我只是将 bat 文件添加为依赖项)。
bat 文件基本上就是 运行 这样的 Assoc 和 Ftype 命令:
Assoc .MyExtension=MyProgram
Ftype MyProgram="Absolute Path" "%%1"
但是我有两个问题:
1) 此命令需要管理权限,这对我的客户来说是个问题。
2)Ftype命令需要完整的安装路径,我只有相对路径(在bat文件旁边),因为安装路径是用户安装的时候决定的.
;tldr;
我的问题是:
1) 我可以在没有管理员许可的情况下完成吗?
2) 如何使用相对路径的Ftype
您的批处理文件可以使用“%~dp0”确定自己的位置。假设您安排将批处理文件存放在与您的 exe 有固定相对距离的位置,这应该可以解决您的问题。
此子例程将创建 FQPN:
@rem Create a fully qualified drive/path name with no redundant backslashes.
@rem Convert all forward slashes to backslashes.
@rem Convert all '..\' sequences to an absolute path.
:SetFQPN
@set %1=%~f2
@exit /b 0
使用批处理相对路径调用时:
@call :SetFQPN varName "%~dp0\..\anyrelativepath"
@echo %varname%
Returns %varName% 中的绝对路径。
使用@Compo 的reg.exe
建议来解决 assoc
命令需要提升权限的问题。
我用 C# 创建了一个简单的程序,它将数据保存到一个具有自定义扩展名的文件中。 文件可以保存在用户PC的任意位置,用户可以每次加载不同的数据文件。
我已将程序构建到 exe 文件中,并使用第 3 方安装程序部署它。 安装程序基本上将 exe 文件及其依赖项打包到一个安装 exe 文件中,用户可以 运行
当用户运行安装文件时,基本安装开始:接受许可,select安装路径...
程序及其依赖项被解压到 selected 安装路径。
现在我想关联我用于我的程序的自定义文件扩展名,以便始终在我的程序中打开。
我找到的最简单的解决方案是在我的程序安装后使用 运行s 的 bat 文件(这是由第 3 方安装程序处理的,我只是将 bat 文件添加为依赖项)。
bat 文件基本上就是 运行 这样的 Assoc 和 Ftype 命令:
Assoc .MyExtension=MyProgram
Ftype MyProgram="Absolute Path" "%%1"
但是我有两个问题:
1) 此命令需要管理权限,这对我的客户来说是个问题。
2)Ftype命令需要完整的安装路径,我只有相对路径(在bat文件旁边),因为安装路径是用户安装的时候决定的.
;tldr;
我的问题是:
1) 我可以在没有管理员许可的情况下完成吗?
2) 如何使用相对路径的Ftype
您的批处理文件可以使用“%~dp0”确定自己的位置。假设您安排将批处理文件存放在与您的 exe 有固定相对距离的位置,这应该可以解决您的问题。
此子例程将创建 FQPN:
@rem Create a fully qualified drive/path name with no redundant backslashes.
@rem Convert all forward slashes to backslashes.
@rem Convert all '..\' sequences to an absolute path.
:SetFQPN
@set %1=%~f2
@exit /b 0
使用批处理相对路径调用时:
@call :SetFQPN varName "%~dp0\..\anyrelativepath"
@echo %varname%
Returns %varName% 中的绝对路径。
使用@Compo 的reg.exe
建议来解决 assoc
命令需要提升权限的问题。