如何在DllInit / loader锁定中获取应用程序目录

时间:2013-07-10 07:00:27

标签: winapi visual-c++ dll

有没有办法在dllinit / loader锁定时获取应用程序目录?目前我只知道提出的方式here。由于这种方法可能会加载Shell32.dll,我认为它在dllinit期间不安全。

有任何建议/其他方式吗?


澄清:我正在搜索AppData目录,而不是可执行文件所在的目录。

3 个答案:

答案 0 :(得分:2)

如果您正在寻找应用程序目录(EXE所在的位置),您可以使用GetModuleFileName然后使用_splitpath。 这是在kernel32中,因此没有其他DLL被加载。

答案 1 :(得分:2)

您可以使用ExpandEnvironmentStringsGetEnvironmentVariable%APPDATA%(或%LOCALAPPDATA%,具体取决于您想要获得的路径)。这些函数来自kernel32.dll。

答案 2 :(得分:0)

您可以使用SHGetFolderPathCSIDL_APPDATACSIDL_LOCAL_APPDATA)或SHGetKnownFolderPathFOLDERID_RoamingAppData / FOLDERID_LocalAppData)。

但我建议使用注册表而不是标记文件。