加载的DLL可以知道它所在的位置吗?

时间:2010-08-17 08:49:06

标签: vb.net dll office-interop

我正在构建Office使用的DLL。 Office运行时,我想确定它的位置。这可能吗?

离。在Office中运行时DLL中的代码:

// should return C:\tmp\officeaddin.dll, 
// currently C:\Program Files\Microsoft Office\Office 12
MessageBox.Show(Application.StartupPath)   

4 个答案:

答案 0 :(得分:3)

即使在Office内部运行,以下内容也应该有效:

Getting the path of the current assembly

(它基本上归结为Assembly.GetExecutingAssembly().Location,但请参阅上面的链接以获取更多详细信息。)

答案 1 :(得分:2)

如果是.NET库,则应使用Assembly.GetExecutingAssembly().LocationApplication.StartupPath显示主应用的路径。

答案 2 :(得分:1)

这对我有用:

Environment.CurrentDirectory

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

Dim location as String = Environment.CurrentDirectory & "\"

答案 3 :(得分:0)

当DLL加载时,它使用实例句柄调用DllMain。如果实现此功能,则可以记录DLL的实例句柄。然后,您可以拨打GetModuleFileName

在.NET中,这将由您负责。有关详细信息,请参阅此question和所选答案。