如何在我的程序中打开特定的文件扩展名



>我用C#创建了一个简单的程序,它将数据保存到具有自定义扩展名的文件中。 该文件可以保存在用户PC中的任何位置,并且用户每次都可以加载不同的数据文件。

我已将程序构建到 exe 文件中,并使用第三方安装程序部署它。 安装程序基本上将 exe 文件及其依赖项打包到一个用户可以运行的安装 exe 文件中

当用户运行安装文件时,将启动基本安装:接受许可证,选择安装路径...

程序及其依赖项将解压缩到选定的安装路径。

现在,我想将用于程序的自定义文件扩展名关联到始终在程序中打开。

我为此找到的最简单的解决方案是使用在我的程序安装后运行的 bat 文件(这由第三方安装程序处理,我只是将 bat 文件添加为依赖项(。

bat 文件基本上只是像这样运行 Assoc 和 Ftype 命令:

Assoc .MyExtension=MyProgram
Ftype MyProgram="Absolute Path" "%%1"

但我有两个问题:

1(此命令需要管理权限,这对我的客户端来说是一个问题。

2(Ftype命令需要安装路径的完整路径,但我只有相对路径(在bat文件旁边(,因为安装路径由用户在安装时确定。

;TLDR;

我的问题是:

1( 我可以在没有管理许可的情况下完成此操作吗?

2(如何使用具有相对路径的F类型。

批处理文件可以使用"%~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%

返回以 %varName% 为单位的绝对路径。

使用 @Compo 的reg.exe建议来解决需要提升的assoc命令权限的问题。

相关内容

  • 没有找到相关文章

最新更新