在新启动的计算机上的网络文件上的GetPrivateProfileInt

时间:2010-07-08 14:15:45

标签: windows winapi

经过深入搜索,为什么某些工作站在早上启动时不会执行某个操作(...)我发现GetPrivateProfileInt只返回默认值并且不打扰当网络子系统尚未激活时,将GetLastError设置为非零值(例如,因为DHCP客户端仍在尝试获取要使用的IP地址。)

这对某人来说听起来很熟悉吗?有人碰巧知道我应该/可以做些什么吗?

现在我将使用备用默认值进行更正,并在获取默认值时停止一段时间。

2 个答案:

答案 0 :(得分:1)

我会检查文件是否存在并在文件存在之前休眠几秒钟。经过一些尝试后,要么使用默认值,要么采取适当的措施。

答案 1 :(得分:1)

GetPrivateProfileInt()是那些无辜的Windows API函数之一,它背后有 ton 代码。有大量的appcompat代码,旨在允许Win3程序在现代版本的Windows上运行。其中一个副作用是速度非常慢,上次我对其进行分析时需要大约50毫秒。

看起来你发现了一个缺陷。据我所知,它实际上可能是appcompat行为的设计。模仿这个API在18年前的运作方式。如果这是准确的话,我当然不知道。

你能做的最好的事情就是停止使用它。可能的解决方法是首先打开文件,以便程序阻塞,直到服务启动并运行。