0

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

有什么建议/其他方法吗?


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

4

3 回答 3

2

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

于 2013-07-10T07:36:08.480 回答
2

您可以将ExpandEnvironmentStringsGetEnvironmentVariable与 %APPDATA% (或 %LOCALAPPDATA% 取决于您想要获取的路径)一起使用。这些函数来自 kernel32.dll。

于 2013-07-10T08:57:44.570 回答
0

您可以使用SHGetFolderPath(with CSIDL_APPDATAor CSIDL_LOCAL_APPDATA) 或SHGetKnownFolderPath(with FOLDERID_RoamingAppData/ FOLDERID_LocalAppData)。

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

于 2013-07-10T11:08:38.813 回答