LoadLibrary:找不到指定的过程

时间:2019-01-14 19:56:39

标签: python windows dll windows-server-2003

我需要在Windows 2003服务器中提取一些有关系统进程的信息(是的,在2019年),我用python编写了该代码,并使用auto_py_to_exe

进行了编译。

当我在服务器上运行.exe文件时,我收到一条错误消息,说"LoadLibrary: The specified procedure could not be found."指向python37.dll

我尝试像一个目录一样进行编译(包括特定的dll),并且尝试像一个文件一样进行编译,然后得到以下output

2 个答案:

答案 0 :(得分:1)

Python 3.7 Win 2003 之间的差距太大。在[Python.Wiki]: WindowsCompilers中,甚至没有列出 Python 3.7 (因为它是 VStudio 2017 构建的)。那(和 Python 本身)将需要/调用 Win 2003 系统 .dll s中不存在的函数。

这是一个例子。在下面的图像中,我用Dependency Walker打开了两个版本的( 2.7 3.7 )主 .dll

Img0

如图所示,两者都从 kernel32.dll 导入了一堆函数。但是一个区别是 python37.dll 导入了 GetTickCount64 。根据{{​​3}},支持它的最低 Server 版本是 Win 2008 ,这意味着该版本在 Win 2003中将无法运行< / em>

因此,您必须回溯到 python 2.7 (顶部)。几年前,我已经使用 VStudio 2010 构建了 Python 2.7.10 ,并且在< em> Win 2003 (和 XP SP 1 );很有可能,这也适用于最新版本( 2.7 )。

请注意,您还必须安装脚本中使用的所有软件包(包括 auto-py-to-exe )。

@ EDIT0

我记得(并检查过)我的 XP SP 3 )上有 Python 3.4.3 >) PC 。因此, Python 3 (在 3.5 之前)也很有可能在 Win 2003 上运行。

@ EDIT1

最后,我有一些官方声明:在[MS.Docs]: GetTickCount64 function官方页面上,将鼠标悬停在“ 下载”按钮上会产生:

  

请注意,在Windows XP或更早版本上不能使用Python 3.5+

或(甚至更清晰):

Python

请注意,不一定意味着能够保证较早的版本能够正常工作。因此,您需要做一些测试(我建议在目标计算机上安装 Python 和必需的软件包,并且只有在一切都成功后,才对所有内容进行打包)。

@ EDIT2

我提到我已经构建了一个 Python2.7 版本。 psutil 是其中的一部分

>>> import sys, platform, psutil
>>> sys.version, sys.platform
('2.7.10 (default, Mar  8 2016, 15:08:43) [MSC v.1600 32 bit (Intel)]', 'win32')
>>> platform.platform()
'Windows-XP-5.1.2600-SP3'
>>> psutil.__version__
'3.1.1'

我没有提到我已经从源代码构建了 psutil ,但是可以使用预构建的 .whl s和 Win 安装程序供下载:Img1

答案 1 :(得分:-1)

最后我使用了python 2.7.9和py2exe,它解决了,但是PSutil不兼容Windows 2003 Server:c