Windows 7 compatibility mode in Windows 7 - windows

I have an application written in Delphi XE5 that targets mainly Windows 7, but also Windows 8 and 8.1. It does require that the user has administrator rights.
It works fine on nearly all of my user's computers, but on a few it only works when selecting compatibility mode for Windows 7 in Windows 7.
The error presents itself directly when starting up the application as a windows dialog stating that:
[NameOfMyProgram] has stopped working.
Problem Event Name: APPCRASH
Fault Module Name: KERNELBASE.dll
Fault Module Version: 6.1.7601.18839
Exception code: 0eedfade
My question is the following: Why is there a compatibility mode for Windows 7 on Windows 7, and what does it mean to use this mode that could affect my application in the way described above?
I have not been able to find any documentation about this specific compatibility mode.

When you're running Windows 7, the "Windows 7" option appears on the compatibility list when you have Windows 7 SP1 installed. If you don't have SP1 installed, then that option will not appear on the list.
The option makes Windows appear to the program as though it does not have the service pack installed, which may affect the behavior of certain API functions.

Related

Inno Setup installer on Windows XP gives "not a valid win32 application"

At some point after some of the Inno Setup updates, any installer generated with it fails to run under Windows XP, giving the error:
not a valid Win32 application
Is there any setting I can change in the setup script to fix this?
Since version 6, Inno Setup no longer supports Windows XP.
See Inno Setup 6 revision history:
OS requirements change: Windows 2000, XP, and Server 2003 are no longer supported. Windows Vista is now the minimum supported operating system.

When will VB6 application support end?

Microsoft no longer supports VB6 development and support from Microsoft has already stopped. But VB6 applications still run on Windows 8.1. See also this article titled "Support Statement for Visual Basic 6.0 on Windows Vista, Windows Server 2008, Windows 7, Windows 8 and Windows 8.1".
When would a VB6 application stop running on Windows? Is there any official statement from Microsoft or any clue about the same?
EDIT:
In this link, the Visual Studio team has mentioned that, "It will be supported at least through 2024". But it's not clear whether they said it's supported in Windows 8 till 2024 or in future release of windows OS too.
The "2024" means as part of Windows 8. The link says the VB6 runtime is part of Windows and therefore will be supported in the same way as the rest of Windows. For example Windows 8 will be supported until 2024 because that's the support lifecycle for Windows 8.
EDIT: Microsoft have now said the VB6 runtime is officially part of Windows 10 too.
EDIT: the VB6 IDE (not runtime) is no longer officially supported on any version of Windows, but there are ways to get it to work on Windows 7 and 8.
Uservoice: The VB6 runtime it is still a component of the Windows operating
system and is a component shipped in Windows 8.1. It will be supported
at least through 2024
It seems clear they mean VB6 will be supported through 2024, not just VB6 on Windows 8 (whose mainstream support ends 6 years earlier anyway).
The VB6 programming language installs and runs on Windows 7, 8.x and 10.
There is a utility to install it here: VB6 IDE install utility
It is in Microsoft's interests for VB6 applications to run in Windows 10 and so they probably will. The same is probably true of most old application frameworks: Microsoft works hard to maintain compatibility. The IDE runs on Windows 7 (not sure about 8 or 10).
However, just because Microsoft says VB6 will run it doesn't mean your particular application will work, particularly if you use third party components. You should at least be thinking about migrating to another development environment.
From what I heard, VB6 applications still work on Windows 10 technical preview. I've seen no official statement yet, but it would seem that VB6 will stay supported for at least a few years.
Microsoft have just stated for VB6 programming on Windows 10:-
"Windows is committed to compatibility. The Windows compatibility team
has been looking at user telemetry and reacting to feedback from
Windows Insiders to ensure that existing apps work well with Windows
10. Windows 10 is designed to run Windows 8.1 and Windows Phone 8.1 software programs. And yes, everyone’s favorite VB6 Runtime will
continue to work, too. In the near future, the compat team will go
more in-depth on this topic on Blogging Windows."
Everyone's favorite VB6 programming on Windows 10
So VB6 programming will work on Windows 10, as does VBA programming.
They also state that 'Project Centennial' Universal Windows Platform Bridge will work with VB6 code.
Instructions for installing the VB6 IDE are available here...
In my personal experience if you build a dll in VB6 and add it as a component to COM Plus in Server 2016 it just won't add. You will get an error such as the following, even for a 'Hello World' component.
A registry value was changed while installing the following component
into a COM+ Application. If you are experiencing activation problems
with this component then please check the registry value for the
following key.
Component: C:\temp\Project1.dll
Registry Key:
CLSID\{D5DE8D20-5BB8-11D1-A1E3-00A0C90F2731}\InProcServer32
Process Name: RunDll32.exe Comsvcs.dll file version: not loaded
There is a project to provide a new language "RADBasic" which is intended to be compatible with the VB6 programming language.
New language compatible with VB6 programming
Looks like Microsoft just extended VB6 runtime support out to Windows 11 and Server 2022. No such luck for the IDE though.
Read more from Microsoft here:
https://learn.microsoft.com/en-us/previous-versions/visualstudio/visual-basic-6/visual-basic-6-support-policy

My vb6 app not running due to msado15.dll missing or registration issue

I register msado15.dll for my VB6 app in windows XP and app run successfully on windows XP and windows 7.
But when I register msado15.dll for my app in windows 7 then it is not running on both XP and windows 7.
What's the issue in windows 7?
With Windows 7 Service Pack 1, Microsoft changed one or more GUIDs of ADO interfaces. They've released a hotfix that allows programs linked with ADO on Windows 7 to run on Windows 7 and earlier versions.
Install the hotfix, then recompile your program, and it should work fine.
With Windows 7 SP1 I compile my project by adding in references msado15.dll in Microsoft ActiveX data objects 6.0 library. Now my app will run in all Windows 7 versions(32 or 64bit).
For windows XP i just make a .bat file in which i register msado15.dll .I put it in project and it is working successfully in windows xp as well.

Window hook is not working in Windows 7 but in Windows xp

We are migrating our applications from windows xp to windows 7. One of the application is window and mouse hook. same code is working fine in windows xp but it is not working in windows 7 target machine(windows 7 installed with our own software platform).
One important thing is its working fine in my personal laptop which is having windows 7 os
i dont know what is happening...
please help me to resolve this...
There are increased security features in Windows 7, and that's probably what you're running into. Try running your app as administrator on your target machine (right click, run as admin).
I haven't tried such a hook in Win7 myself, but I saw this happen from XP to a Vista box.
I have found the answer. actually our application does hook every process we create. i have created 32bit dll. target machine is 64 bit so every process is 64bit right. so it tried to load my hook dll(32bit) into 64bit processes. we cannot load 32bit dll into 64bit exe...... :)

Not able to deploy VB6 based setup on Windows 7

I have a setup created using Vb6. I am unable to install it under Windows 7. Windows 7 is not registering OCX controls included in the setup.
Same setup works fine under Windows XP and all other previous Microsoft operating systems.
Windows 7 OS is 64 bit.
Also, I have tried all compatibility mode which is available under Windows 7 without much luck.
Unfortunately I don't have source code with me. Otherwise I could have ported entire source to Dot Net.

Resources