【问题标题】:Why does my dll end up in AppData\Local\Temp\为什么我的 dll 会出现在 AppData\Local\Temp\
【发布时间】:2011-08-08 12:02:47
【问题描述】:

我有一个基于 SWT 的小型 Java 应用程序。安装时 swt-win32-*.dll 与我的应用程序一起安装在 C:\Program Files\myapp\win32 中。

当我在进程资源管理器中查看我的应用程序时,我注意到 dll 是从以下位置加载的:

C:\Users\[Username]\AppData\Local\Temp\swtlib-32\swt-win32-*.dll 

在 Windows XP 上,它最终会出现在:

C:\Documents and Settings\[Username]\Local Settings\Temp\swt-win32-*.dll

每当我从临时文件夹中删除它并重新启动我的应用程序时,DLL 都会再次复制到那里。我的应用程序所依赖的其他 dll 不显示此行为。

谁复制 dll(我的应用程序没有)? 背后的原因是什么?

【问题讨论】:

  • 这是应用程序用来绕过 UAC 的一种技巧。 Chrome 也使用它。他们可以静默更新 DLL。病毒也一样。

标签: windows dll appdata


【解决方案1】:

我不太了解 Java,但如果它在 JAR 中(或任何类型的存档,真的),那么它必须在加载之前提取到真实文件中(因为 OS 不提供其他支持的方式去做)。

【讨论】:

  • 你是对的,我错了。 dll 确实在 jar 中,并且是从那里提取的。谢谢您的回答。我羞愧地删除了我误导的评论;-)。
猜你喜欢
  • 2020-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-14
  • 2013-02-28
相关资源
最近更新 更多