Проверьте, присутствует ли DLL в системе

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

Действительно ли это возможно в C#? (способом, который работал бы над ВСЕМ Windows OS?)

Для DLL я имею в виду классика non-.NET dll (Win32 dll)

(В основном я хочу осуществить проверку вызвать, я использую DLL, который может или не может присутствовать в пользовательской системе, но я не хочу, чтобы приложение отказало, не предупреждая, когда это не присутствует :P)

8
задан feal87 18 February 2010 в 22:06
поделиться

3 ответа

Вызов функции API LoadLibrary :

[DllImport("kernel32", SetLastError=true)]
static extern IntPtr LoadLibrary(string lpFileName);

static bool CheckLibrary(string fileName) {
    return LoadLibrary(fileName) == IntPtr.Zero;
}
15
ответ дан 5 December 2019 в 07:58
поделиться
1
ответ дан 5 December 2019 в 07:58
поделиться

Я предполагаю, что это вызов PInvoke?

Если так, то самый простой способ заставить его определить наличие файла - это сделать вызов и поймать исключение, которое возникнет, если файл не существует.

[DllImport("some.dll")]
private static void SomeMethod();

public static void SomeMethodWrapper() {
  try {
    SomeMethod();
  } catch (FileNotFoundException) {
    // Do Nothing 
  }
}
1
ответ дан 5 December 2019 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: