Изменить жестко закодированный путь в Dll - PullRequest
0 голосов
/ 22 мая 2018

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

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

Любое предложение \ решение будет высоко оценено

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

Ответы [ 2 ]

0 голосов
/ 22 мая 2018

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

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

subst d: c:\MyRealFolder

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

0 голосов
/ 22 мая 2018

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

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

enter image description here

enter image description here

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...