在Dll中修改硬编码路径

时间:2018-05-22 11:08:57

标签: c# wpf

我有一个库DLL,它将输出文件保存到D Drive(库中的HardCoded Path) 如果用户没有PC中的驱动器,应用程序将崩溃。

我们可以做任何事情,以便DLL开始保存到所需的路径而不是HardCoded 一种解决方案是插入一个pendrive并将其标记为D:它可以工作,但这不是一个好的解决方案

任何建议\解决方案将不胜感激

P.S。 DLL是用C#编写的。 感谢。

2 个答案:

答案 0 :(得分:2)

如果要编辑原始库以将路径更改为更合适的路径,或者甚至更广泛地更改方法,则可以使用dnSpy

在反编译代码中,导航到硬编码值的方法,然后在上下文菜单中单击Edit Method并执行更改。

enter image description here

enter image description here

然后转到File-> Save Module...以保存已编辑的程序集。

您还可以使用dnSpy调试崩溃的应用程序,以找到发生异常的确切位置。

根据版本和混淆等内容,您的里程可能会有所不同。

答案 1 :(得分:2)

在我的评论中,我建议使用符号链接(或符号链接),但在反射时只有在D驱动器存在时才有效 - 即您可以重定向D驱动器上不存在的文件夹只要D驱动器存在,就可以存在于C驱动器上的那个。

还有另一种选择 - SUBST命令。 SUBST将驱动器号与路径相关联。例如:

subst d: c:\MyRealFolder

以上内容会将D驱动器的请求重定向到MyRealFolder驱动器上的C文件夹。