Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
DLL hell
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
=== Other countermeasures === There are other countermeasures to avoid DLL hell, some of which may have to be used simultaneously; some other features that help to mitigate the problem are: * Installation tools are now bundled into [[Microsoft Visual Studio]], one of the main environments for Windows development. These tools perform version checking before DLL installation, and can include predefined installation packages in a .MSI installation. This allows third party applications to integrate OS component updates without having to write their own installers for these components. * [[System Restore]] can recover a system from a bad installation, including registry damage. Although this does not prevent the problem, it facilitates recovery therefrom. * WinSxS ([[Side-by-side assembly|Windows Side-by-Side]]) directory, which allows multiple versions of the same libraries to co-exist. * Run 16-bit applications in a separate memory space under a 32-bit version of Windows to allow two applications to use conflicting versions of the same DLL at the same time. * Use a version of Windows that includes [[Windows File Protection]]. [[Windows Me]] and [[Windows 2000]], both released in 2000, support this form of system file protection, as do [[Windows XP]] and [[Windows Server 2003]]. Its replacement, [[Windows Resource Protection]], was introduced in Windows Vista and Windows Server 2008, and uses a different method of protecting system files from being changed. * Registration-free COM: [[Windows XP]] introduced a new mode of COM object registration called "''Registration-free COM''". This feature makes it possible for applications that need to install COM objects to store all the required COM registry information in the application's own directory, instead of in the global system registry. Thus, it provides a mechanism for multiple versions of the same DLL to be registered at the same time by multiple applications (Microsoft calls this "[[Side-by-Side Assembly]]"<ref>[http://msdn2.microsoft.com/en-us/library/aa376307.aspx Side-by-side Assemblies (Windows)]</ref>). DLL hell can be substantially avoided using Registration-free COM, the only limitation being it requires at least [[Windows XP]] or later Windows versions and that it must not be used for EXE COM servers or system-wide components such as [[Microsoft Data Access Components|MDAC]], [[MSXML]], [[DirectX]] or [[Internet Explorer]]. * Shipping the operating system with a capable [[package management system]] that is able to track the DLL dependencies, encouraging the use of the package manager and discouraging manual installation of DLLs. [[Windows Installer]], included with [[Windows Me]], [[Windows 2000]] and all later versions provides this functionality. * Having a central database or authority for DLL conflict resolution and software distribution. Changes to a library can be submitted to this authority; thus, it can make sure compatibility is preserved in the developed branches. If some older software is incompatible with the current library, the authority can provide a compatibility interface for it, or bundle the old version as a distinct package. * If software developers need to customize a library, and if the main library release is unlikely to incorporate the changes that they need, they can ship the customized DLL for the program's private use (commonly by placing it in the program's private directory) or statically link the program against the customized library. * While DLLs are best for modularizing applications and the system's components and as third-party libraries, their usage is not imperative in all cases on modern systems where memory is no longer a constraint. For example, if an application needs a library that will not be used anywhere else, it can be linked statically, with no space penalty and with a speed gain. * Windows Vista and later use a special ''TrustedInstaller'' service to install operating system files. Other user accounts, including the SYSTEM, have no access to overwrite core system binaries. Windows 7 expands this functionality to some critical parts of the Registry.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)