Sign in to follow this  
Followers 0
Dolemite50

psapi.dll error

7 posts in this topic

Take this with a grain of salt because I'm still a greenhorn. I recently switched back to XP from Vista (clean format) and when I attempted to re-open a form I created in Koda it gave me an object error which ended up being from only having FlashPlayer8 installed and trying to open a form created with 9. I resolved that error by downloading the latest version of FlashPlayer, but then I started getting errors regarding getProcessImageNameW not being found in psapi.dll. I searched my C: drive to make sure that I had the dll and managed to find three of them, one in Win\Sys32, one in AutoIt, and one in my Dreamweaver folder.

I renamed the AutoIt entry and all seems to be working fine again, but the fact that it was about 15-20k bigger than the others makes me worry that I'll run into more trouble or miss some functionality.

My only guess is that my global path somehow got changed but I can't find anything related to AutoIt in the environmental variables. Whadaya think? Reinstall AutoIt or just let it ride?

Thanks

Share this post


Link to post
Share on other sites



Take this with a grain of salt because I'm still a greenhorn. I recently switched back to XP from Vista (clean format) and when I attempted to re-open a form I created in Koda it gave me an object error which ended up being from only having FlashPlayer8 installed and trying to open a form created with 9. I resolved that error by downloading the latest version of FlashPlayer, but then I started getting errors regarding getProcessImageNameW not being found in psapi.dll. I searched my C: drive to make sure that I had the dll and managed to find three of them, one in Win\Sys32, one in AutoIt, and one in my Dreamweaver folder.

I renamed the AutoIt entry and all seems to be working fine again, but the fact that it was about 15-20k bigger than the others makes me worry that I'll run into more trouble or miss some functionality.

My only guess is that my global path somehow got changed but I can't find anything related to AutoIt in the environmental variables. Whadaya think? Reinstall AutoIt or just let it ride?

Thanks

Welcome to Microsoft DLL hell. Ahead Software (makers of Nero Burning ROM) are good examples of what not to do here. This is what lazy programmers do: When in doubt, add your own 'standard' system DLLs to your program files folder during installation and if your program is the first since Windows bootup to call that DLL (dynamic link library), it will be loaded into memory and the requested subroutine executed. It will be retained in memory until flushed. Another program calling the same DLL name will have the one in memory served to it by Windows, and if the first one that was loaded is the older one and doesn't have a valid subroutine the other program needs, then BAM!

When you find that you have multiple copies of a DLL on your system, look for the latest version and make sure it is the only one that can be accessed from the usual Windows system folders and not from the Program Files folder. Rename the others and see if things stabilise. The version number of the DLL is often a better guide, where careful programmers add extra functionality to an existing DLL while retaining the existing features. Often overwriting the older versions with a copy of the latest version will fix stability errors. Ugly, but something that you should not have to worry about in an ideal world.

In your case, depending on which version of the psapi.dll DLL gets called first and loaded into system memory as to whether all of the programs that need the embedded getProcessImageNameW subroutine will work well.

Share this post


Link to post
Share on other sites

I searched my C: drive to make sure that I had the dll and managed to find three of them, one in Win\Sys32, one in AutoIt, and one in my Dreamweaver folder.

Delete the one in the AutoIt folder if you have not got Win NT. It is within the installer only for Win NT (and perhaps Win 95?) which does not have psapi.dll as a system file.

Share this post


Link to post
Share on other sites

Too bad Windows doesn't allow explicit path linkage. Like, "I want to use the shell32.dll in my program's folder," and things of that nature.

Share this post


Link to post
Share on other sites

Too bad Windows doesn't allow explicit path linkage. Like, "I want to use the shell32.dll in my program's folder," and things of that nature.

Yes it does - it's called isolation and works either by using the .local method where a zero byte file with the same name as the main.exe is created, but with an additional .local extension - eg main.exe.local

This works on XP and above and I believe on W2K also.

The registration information is still pulled from the registry, and is probably derived from a DLL of the same name in the System32 folder. As long as that DLL is the same or a newer version then your local DLL should work fine as the entry points in the registry should all be there.

The second method is isolation by manifest, and requires XP minimum. I will leave you to do your own further research on that method.

Share this post


Link to post
Share on other sites

#6 ·  Posted (edited)

The manifest files confuse me because I've seen them but never any documentation on them.

Edited by Mr Icekirby

Share this post


Link to post
Share on other sites

Thanks for all the good info.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!


Register a new account

Sign in

Already have an account? Sign in here.


Sign In Now
Sign in to follow this  
Followers 0