Изменение жесткого кодированного пути в Dll

Kanwarkajla спросил: 28 апреля 2018 в 09:28 в: c#

У меня есть библиотека DLL, которая сохраняет выходные файлы на D Drive (HardCoded Path в библиотеке). Приложение вылетает, если у пользователя нет диска на компьютере.

Можем ли мы что-нибудь сделать так DLL запускает сохранение в нужный путь вместо решения HardCodedOne, чтобы вставить pendrive и Label it D: он работает, но это нехорошее решение.

Приветствуется любое предложение \ Solutions

PS DLL написана на C #. Спасибо.

2 ответа

Titian Cernicova-Dragomir ответил: 28 апреля 2018 в 09:53

Если вы хотите отредактировать исходную библиотеку, чтобы изменить путь к чему-то более подходящему или даже изменить метод более широко, вы можете использовать dnSpy.

В декомпилированном коде перейдите к методу, в котором Значение жестко запрограммировано и в контекстном меню нажмите на Edit Method и выполните изменения.

Затем перейдите в File-> Save Module..., чтобы сохранить отредактированную сборку.

Вы также можете использовать dnSpy для отладки аварийного приложения, чтобы найти точное место, где возникает исключение.

В зависимости от таких вещей, как версия и обфускация, ваш пробег может меняться.

Diado ответил: 28 апреля 2018 в 09:56

В моем комментарии я предложил использовать символическую ссылку (или Символическую ссылку ), но при отражении, которая будет работать только, если существует диск D, т. е. вы можете перенаправить несуществующую папку на диск D к тому, который существует на диске C, если существует D-диск.

Существует еще одна альтернатива - команда SUBST. SUBST связывает букву диска с дорожкой. Например:

subst d: c:\MyRealFolder

Вышеуказанное перенаправит запросы на диск D в папку MyRealFolder на C.