代码之家  ›  专栏  ›  技术社区  ›  Gad

加载的DLL能知道它在哪里吗?

  •  2
  • Gad  · 技术社区  · 14 年前

    我正在建立一个由Office使用的DLL。当Office运行时,我想确定它的位置。有可能吗?

    例如,当在Office中运行时,dll中的代码:

    // should return C:\tmp\officeaddin.dll, 
    // currently C:\Program Files\Microsoft Office\Office 12
    MessageBox.Show(Application.StartupPath)   
    
    4 回复  |  直到 10 年前
        1
  •  3
  •   Community gkalpak    7 年前

    即使在办公室内运行,以下内容也应有效:

    Getting the path of the current assembly

    (基本上可以归结为 Assembly.GetExecutingAssembly().Location ,但有关详细信息,请参见上面的链接。)

        2
  •  2
  •   wRAR    14 年前

    如果它是.NET库,则应使用 Assembly.GetExecutingAssembly().Location . Application.StartupPath 显示主应用程序的路径。

        3
  •  1
  •   TheRyan722 Demir    10 年前

    这对我很有用:

    Environment.CurrentDirectory
    

    所以你可以给它设置一个字符串,比如:

    Dim location as String = Environment.CurrentDirectory & "\"
    
        4
  •  0
  •   Community gkalpak    7 年前

    当加载dll时,它使用实例句柄调用dllmain。如果实现此函数,则可以记录dll的实例句柄。从这里,你可以打电话给 GetModuleFileName .

    在.NET中,这是为您处理的。看到这个 question 并选择了详细答案。