【问题标题】:Does a Lazarus program need special permissions to run on Windows?Lazarus 程序是否需要特殊权限才能在 Windows 上运行?
【发布时间】:2014-06-03 11:17:46
【问题描述】:

我构建了一个 Lazarus 程序,现在它是 exe 格式。

我可以在我的两台运行 XP 和 Vista 的计算机上运行它。

但是,还有其他计算机也运行 XP、Vista 和 Win7,但我根本无法在它们上运行。

没有错误,什么都没有……还有其他人遇到过这个问题吗?

程序正在连接到我的 LAN 服务器上的 postgres 数据库。

任何解决此问题的想法都非常有价值。

新信息:

也许我错了,但这里有一个想法......在开发机器上,当我第一次尝试连接到 postgres 时,我最初收到一个错误,如 **libpq.dll* not found。然后设置好路径后就好了。我现在正在考虑它是否找不到该库,这就是它无法运行的原因。

如果是这种情况,我的行 Application.OnException:=@CatchErr; 是否应该捕获错误?如果不是,我应该如何检查这个 dll 或其他任何东西是否丢失?

【问题讨论】:

  • 您是否添加了任何日志记录代码以查看您的应用程序启动到什么程度?
  • @MartynA 我没有任何具体信息,但我有这个:Application.OnException:=@CatchErr; 问题是它从不报告任何内容。我难住了!我只是无法想象这一点。 似乎代码永远不会运行。
  • 听起来你肯定需要一些启动日志记录代码 - FWIW 我发现远程版本的 CodeSite (www.raize.com) 对于这种事情非常宝贵。关于您的“新信息”,如果您的应用在执行到达 Application.Initialize 之前失败,我认为您的 OnException 永远不会被调用 - 尝试在 Application.Initialize 之前故意引发异常以进行检查。

标签: windows permissions lan lazarus ubuntu-server


【解决方案1】:

首先,衷心感谢 Marco 和 MArtyn 的精彩提示和指导,让我想到了这个奇怪的问题。

这就是发生的事情......

我安装了 Windows 7 和 XP 的全新副本。像往常一样,它没有工作。

然后我怀疑是libpq的老问题,然后我从我的工作操作系统中复制了libpq.dll并将它放在应用程序文件夹中。顺便说一下,这台机器没有 Lazarus 或 Postgres。执行此操作的那一刻,我收到第一条错误消息,提示缺少 msvcr100.dll。

然后我也复制了它。因此,对于每个错误,复制粘贴的循环都会继续进行,直到我最终将这些文件带到我的“非工作”状态。

  • libpq.dll - 9.2.1.12263 - PosgreSQL 访问库
  • msvcr100.dll - 10.0.40219.1 - Microsoft C 运行时库
  • ssleay32.dll - 1.0.1.2 - OpenSSL 共享库
  • libeay32.dll - 1.0.1.2 OpenSSL 共享库
  • libintl.dll - 0.18.1.0 - LGPLed libintl for Windows NT/2000/XP/Vista/7

一旦这些文件进来,问题就消失了! 现在该程序运行良好:)

感谢您的所有投入!

我现在必须查看上述文件对他们的许可证的说明,因为我必须将应用程序分发给其他用户。但我很高兴至少我们找到了问题所在。

【讨论】:

    【解决方案2】:

    不,基本的 Lazarus 程序不需要特殊权限。当然也可能是程序中的特定功能需要特殊权限(例如访问 1024 以下的端口、访问某些路径等)。

    另外请注意,默认情况下可能会阻止从系统认为不安全的来源(互联网、某些类型的共享)下载的 EXE。如果是这样的话,如果你在Windows资源管理器中获取.EXE的属性,就会有一个“取消阻止”按钮。

    任何与网络相关的事情当然都需要正确配置防火墙。询问您的弹出窗口可能并不总是出现,如有疑问请手动配置防火墙。

    【讨论】:

    • postgres 在服务器上使用端口 5432。该exe具有完全权限。防火墙已关闭。依然没有。我刚刚在虚拟机上重新安装了 XP。尝试在其上运行应用程序。它不运行。所以我猜有些图书馆不见了。有什么方法可以查明我的程序是否所有的库都可用?
    • “有没有办法找出我的程序是否所有的库都可用?” 我认为你可以使用像 ProcessHacker (SourceForge.Net) 这样的实用程序来查看它是否无法加载所需的库.
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-30
    • 2021-01-16
    相关资源
    最近更新 更多