Bringing back the console graphics screen-buffers? #360

Open
opened 2026-01-30 21:49:55 +00:00 by claunia · 14 comments
Owner

Originally created by @HBelusca on GitHub (Aug 30, 2018).

How hard would it be to bring back the console graphics screen-buffers functionality to conhost, which previously existed in Windows <= 2003 and was used by NTVDM to display the output of graphics DOS applications while being run in windowed mode? (see e.g. https://virtuallyfun.com/wordpress/2009/08/08/softpc-%e2%80%93at-version-3/ ) (hint: done using CreateConsoleScreenBuffer with special parameters.)

This feature could also be useful for those other applications (e.g. some Far-Manager plugins) that attempt through convoluted hacks (aka. giving the illusion) to display graphics contents (e.g. thumbnails of image files) in the console window.
Or for these 3rd-party emulators (DOS, etc...) that can start from the command-line, but are currently forced to create a separate window when starting a graphics app.

Originally created by @HBelusca on GitHub (Aug 30, 2018). How hard would it be to bring back the console graphics screen-buffers functionality to conhost, which previously existed in Windows <= 2003 and was used by NTVDM to display the output of graphics DOS applications while being run in windowed mode? (see e.g. https://virtuallyfun.com/wordpress/2009/08/08/softpc-%e2%80%93at-version-3/ ) (hint: done using CreateConsoleScreenBuffer with special parameters.) This feature could also be useful for those other applications (e.g. some Far-Manager plugins) that attempt through convoluted hacks (aka. giving the illusion) to display graphics contents (e.g. thumbnails of image files) in the console window. Or for these 3rd-party emulators (DOS, etc...) that can start from the command-line, but are currently forced to create a separate window when starting a graphics app.
claunia added the Issue-FeatureProduct-ConhostArea-OutputArea-Server labels 2026-01-30 21:49:55 +00:00
Author
Owner

@zadjii-msft commented on GitHub (Aug 30, 2018):

I would reckon it'd be nearly impossible - I think all of the NTVDM code was torn out a long time ago, and there's pretty much no demand to add it back.

@zadjii-msft commented on GitHub (Aug 30, 2018): I would reckon it'd be nearly impossible - I think all of the NTVDM code was torn out a long time ago, and there's pretty much no demand to add it back.
Author
Owner

@HBelusca commented on GitHub (Aug 31, 2018):

I was wondering whether this feature couldn't be used also as the underlying thing to emulate (in WSL) the /dev/video0 or /dev/fb0 devices.

(Besides, note that in principle this function doesn't require the existence of NTVDM: a shared memory section between conhost and the app that requests via the CreateConsoleScreenBuffer() the graphics SB, whose characteristics are passed through the last parameter, and the shared mutex to synchronize write/reads (for conhost to render the image), should be sufficient 😃 )

@HBelusca commented on GitHub (Aug 31, 2018): I was wondering whether this feature couldn't be used also as the underlying thing to emulate (in WSL) the /dev/video0 or /dev/fb0 devices. (Besides, note that in principle this function doesn't require the existence of NTVDM: a shared memory section between conhost and the app that requests via the CreateConsoleScreenBuffer() the graphics SB, whose characteristics are passed through the last parameter, and the shared mutex to synchronize write/reads (for conhost to render the image), should be sufficient 😃 )
Author
Owner

@oising commented on GitHub (Oct 17, 2018):

@HBelusca we all await your pull request with much interest ;)

@oising commented on GitHub (Oct 17, 2018): @HBelusca we all await your pull request with much interest ;)
Author
Owner

@HBelusca commented on GitHub (Oct 17, 2018):

LOL my pull request? This would imply I work in the Console team at Microsoft and have access to their code for writing such an implementation... Sadly I don't work at all there! xDD

@HBelusca commented on GitHub (Oct 17, 2018): LOL my pull request? This would imply I work in the Console team at Microsoft and have access to their code for writing such an implementation... Sadly I don't work at all there! xDD
Author
Owner

@leecher1337 commented on GitHub (Apr 14, 2019):

It's still there, it just has a bug that needs to be fixed.
ConHostV1.dll!CreateConsoleBitmap (second NtMapViewOFSection doesn't have its buffer Ptr initialized to 0). My loader fixes this for instance:

https://github.com/leecher1337/ntvdmx64/blob/master/ntvdmpatch/src/ldntvdm/ldntvdm/ldntvdm.c

Also ensure that you use Console V1 so that it is supported:

https://github.com/leecher1337/ntvdmx64/blob/master/ntvdmpatch/release/reg/conhost.reg

Would be glad if Microsoft finally fixes this bug which is there since Windows 7.
Share conhost sourcecode and you get a pull request :-P

In order to happily work with it, you also need to fix SetconsolePalette calls (also described in source above).

@leecher1337 commented on GitHub (Apr 14, 2019): It's still there, it just has a bug that needs to be fixed. ConHostV1.dll!CreateConsoleBitmap (second NtMapViewOFSection doesn't have its buffer Ptr initialized to 0). My loader fixes this for instance: https://github.com/leecher1337/ntvdmx64/blob/master/ntvdmpatch/src/ldntvdm/ldntvdm/ldntvdm.c Also ensure that you use Console V1 so that it is supported: https://github.com/leecher1337/ntvdmx64/blob/master/ntvdmpatch/release/reg/conhost.reg Would be glad if Microsoft finally fixes this bug which is there since Windows 7. Share conhost sourcecode and you get a pull request :-P In order to happily work with it, you also need to fix SetconsolePalette calls (also described in source above).
Author
Owner

@leecher1337 commented on GitHub (Apr 14, 2019):

Here is a more detailled information about the bug and how to fix it properly:

NTSTATUS CreateScreenBuffer(...)
{
    ...
    ScreenInfo = HeapAlloc(pConHeap,MAKE_TAG( SCREEN_TAG ),sizeof(SCREEN_INFORMATION));
    if (ScreenInfo == NULL) return STATUS_NO_MEMORY;
    ...
    if ((ScreenInfo->Flags = Flags) & CONSOLE_TEXTMODE_BUFFER) {
	...
    } else {
        Status = CreateConsoleBitmap(GraphBufInfo, ScreenInfo);
        ...
    }
    ...
}

In

CreateConsoleBitmap(...)
{
   ...
    // There it is OK:
    ScreenInfo->BufferInfo.GraphicsInfo.BitMap = 0;
    Status = NtMapViewOfSection(ScreenInfo->BufferInfo.GraphicsInfo.hSection,
                                NtCurrentProcess(),
                                &ScreenInfo->BufferInfo.GraphicsInfo.BitMap,
                                0L,
                                GraphicsInfo->lpBitMapInfo->bmiHeader.biSizeImage,
                                NULL,
                                &ViewSize,
                                ViewUnmap,
                                0L,
                                PAGE_READWRITE
                               );
...
    ViewSize = GraphicsInfo->lpBitMapInfo->bmiHeader.biSizeImage;
// BUGBUG        OH NOES! YOU FORGOT THIS LINE:
ScreenInfo->BufferInfo.GraphicsInfo.ClientBitMap = 0;
// ^^ To fix, add this line here! ^^
    Status = NtMapViewOfSection(ScreenInfo->BufferInfo.GraphicsInfo.hSection,
                                CONSOLE_CLIENTPROCESSHANDLE(),
                                &ScreenInfo->BufferInfo.GraphicsInfo.ClientBitMap,
                                0L,
                                GraphicsInfo->lpBitMapInfo->bmiHeader.biSizeImage,
                                NULL,
                                &ViewSize,
                                ViewUnmap,
                                0L,
                                PAGE_READWRITE
                               );

}
@leecher1337 commented on GitHub (Apr 14, 2019): Here is a more detailled information about the bug and how to fix it properly: ``` NTSTATUS CreateScreenBuffer(...) { ... ScreenInfo = HeapAlloc(pConHeap,MAKE_TAG( SCREEN_TAG ),sizeof(SCREEN_INFORMATION)); if (ScreenInfo == NULL) return STATUS_NO_MEMORY; ... if ((ScreenInfo->Flags = Flags) & CONSOLE_TEXTMODE_BUFFER) { ... } else { Status = CreateConsoleBitmap(GraphBufInfo, ScreenInfo); ... } ... } ``` In ``` CreateConsoleBitmap(...) { ... // There it is OK: ScreenInfo->BufferInfo.GraphicsInfo.BitMap = 0; Status = NtMapViewOfSection(ScreenInfo->BufferInfo.GraphicsInfo.hSection, NtCurrentProcess(), &ScreenInfo->BufferInfo.GraphicsInfo.BitMap, 0L, GraphicsInfo->lpBitMapInfo->bmiHeader.biSizeImage, NULL, &ViewSize, ViewUnmap, 0L, PAGE_READWRITE ); ... ViewSize = GraphicsInfo->lpBitMapInfo->bmiHeader.biSizeImage; ``` // BUGBUG OH NOES! YOU FORGOT THIS LINE: ScreenInfo->BufferInfo.GraphicsInfo.ClientBitMap = 0; // ^^ To fix, add this line here! ^^ ``` Status = NtMapViewOfSection(ScreenInfo->BufferInfo.GraphicsInfo.hSection, CONSOLE_CLIENTPROCESSHANDLE(), &ScreenInfo->BufferInfo.GraphicsInfo.ClientBitMap, 0L, GraphicsInfo->lpBitMapInfo->bmiHeader.biSizeImage, NULL, &ViewSize, ViewUnmap, 0L, PAGE_READWRITE ); } ```
Author
Owner

@HBelusca commented on GitHub (May 7, 2019):

oising commented on Oct 17, 2018
@HBelusca we all await your pull request with much interest ;)

Ok now I can really actually submit a pull request!!

@HBelusca commented on GitHub (May 7, 2019): > oising commented on Oct 17, 2018 > @HBelusca we all await your pull request with much interest ;) Ok now I can really actually submit a pull request!!
Author
Owner

@leecher1337 commented on GitHub (Nov 3, 2024):

As Windows 11 24H2 seems to have removed ConhostV1.dll by default and it has to be restored from backup in order to work, this issue becomes more pressing, as my application is breaking due to the failure to implement this.

@leecher1337 commented on GitHub (Nov 3, 2024): As Windows 11 24H2 seems to have removed ConhostV1.dll by default and it has to be restored from backup in order to work, this issue becomes more pressing, as my application is breaking due to the failure to implement this.
Author
Owner

@DHowett commented on GitHub (Nov 3, 2024):

it has to be restored from backup in order to work

It’s an optional feature. You can turn it on in the Optional Features page. Why would your first thought be to restore it from a backup?

If we were going to remove it completely, we would not have left you an annoying disabled checkbox that magically re-enabled itself when the right DLL was on disk.

@DHowett commented on GitHub (Nov 3, 2024): > it has to be restored from backup in order to work It’s an optional feature. You can turn it on in the Optional Features page. Why would your first thought be to restore it from a backup? If we were going to remove it completely, we would not have left you an annoying disabled checkbox that magically re-enabled itself when the right DLL was on disk.
Author
Owner

@leecher1337 commented on GitHub (Nov 4, 2024):

Thank you for your fast reply!
Searching it in the Optional Features list was my first thought, as it has been promised to be one, but I didn't find it in the list. Where to find it?
I now looked through the list a few times, but it seems I still cannot identify it.

Image

@leecher1337 commented on GitHub (Nov 4, 2024): Thank you for your fast reply! Searching it in the Optional Features list was my first thought, as it has been promised to be one, but I didn't find it in the list. Where to find it? I now looked through the list a few times, but it seems I still cannot identify it. ![Image](https://github.com/user-attachments/assets/8c88cdb6-73d7-4fb4-aa0f-592e782e1b81)
Author
Owner

@leecher1337 commented on GitHub (Nov 4, 2024):

PS C:\WINDOWS\system32> Get-WindowsOptionalFeature -Online

FeatureName : Windows-Defender-Default-Definitions
State       : Disabled

FeatureName : Printing-XPSServices-Features
State       : Enabled

FeatureName : TelnetClient
State       : Disabled

FeatureName : TFTP
State       : Disabled

FeatureName : TIFFIFilter
State       : Disabled

FeatureName : VirtualMachinePlatform
State       : Enabled

FeatureName : Windows-Identity-Foundation
State       : Disabled

FeatureName : Client-ProjFS
State       : Disabled

FeatureName : SimpleTCP
State       : Disabled

FeatureName : WorkFolders-Client
State       : Enabled

FeatureName : NetFx3
State       : DisabledWithPayloadRemoved

FeatureName : WCF-HTTP-Activation
State       : Disabled

FeatureName : WCF-NonHTTP-Activation
State       : Disabled

FeatureName : IIS-WebServerRole
State       : Disabled

FeatureName : IIS-WebServer
State       : Disabled

FeatureName : IIS-CommonHttpFeatures
State       : Disabled

FeatureName : IIS-HttpErrors
State       : Disabled

FeatureName : IIS-HttpRedirect
State       : Disabled

FeatureName : IIS-ApplicationDevelopment
State       : Disabled

FeatureName : IIS-Security
State       : Disabled

FeatureName : IIS-RequestFiltering
State       : Disabled

FeatureName : IIS-NetFxExtensibility
State       : Disabled

FeatureName : IIS-NetFxExtensibility45
State       : Disabled

FeatureName : IIS-HealthAndDiagnostics
State       : Disabled

FeatureName : IIS-HttpLogging
State       : Disabled

FeatureName : IIS-LoggingLibraries
State       : Disabled

FeatureName : IIS-RequestMonitor
State       : Disabled

FeatureName : IIS-HttpTracing
State       : Disabled

FeatureName : IIS-URLAuthorization
State       : Disabled

FeatureName : IIS-IPSecurity
State       : Disabled

FeatureName : IIS-Performance
State       : Disabled

FeatureName : IIS-HttpCompressionDynamic
State       : Disabled

FeatureName : IIS-WebServerManagementTools
State       : Disabled

FeatureName : IIS-ManagementScriptingTools
State       : Disabled

FeatureName : IIS-IIS6ManagementCompatibility
State       : Disabled

FeatureName : IIS-Metabase
State       : Disabled

FeatureName : WAS-WindowsActivationService
State       : Disabled

FeatureName : WAS-ProcessModel
State       : Disabled

FeatureName : WAS-NetFxEnvironment
State       : Disabled

FeatureName : WAS-ConfigurationAPI
State       : Disabled

FeatureName : IIS-HostableWebCore
State       : Disabled

FeatureName : WCF-Services45
State       : Enabled

FeatureName : WCF-HTTP-Activation45
State       : Disabled

FeatureName : WCF-TCP-Activation45
State       : Disabled

FeatureName : WCF-Pipe-Activation45
State       : Disabled

FeatureName : WCF-MSMQ-Activation45
State       : Disabled

FeatureName : WCF-TCP-PortSharing45
State       : Enabled

FeatureName : IIS-StaticContent
State       : Disabled

FeatureName : IIS-DefaultDocument
State       : Disabled

FeatureName : IIS-DirectoryBrowsing
State       : Disabled

FeatureName : IIS-WebDAV
State       : Disabled

FeatureName : IIS-WebSockets
State       : Disabled

FeatureName : IIS-ApplicationInit
State       : Disabled

FeatureName : IIS-ISAPIFilter
State       : Disabled

FeatureName : IIS-ISAPIExtensions
State       : Disabled

FeatureName : IIS-ASPNET
State       : Disabled

FeatureName : IIS-ASPNET45
State       : Disabled

FeatureName : IIS-ASP
State       : Disabled

FeatureName : IIS-CGI
State       : Disabled

FeatureName : IIS-ServerSideIncludes
State       : Disabled

FeatureName : IIS-CustomLogging
State       : Disabled

FeatureName : IIS-BasicAuthentication
State       : Disabled

FeatureName : IIS-HttpCompressionStatic
State       : Disabled

FeatureName : IIS-ManagementConsole
State       : Disabled

FeatureName : IIS-ManagementService
State       : Disabled

FeatureName : IIS-WMICompatibility
State       : Disabled

FeatureName : IIS-LegacyScripts
State       : Disabled

FeatureName : IIS-FTPServer
State       : Disabled

FeatureName : IIS-FTPSvc
State       : Disabled

FeatureName : IIS-FTPExtensibility
State       : Disabled

FeatureName : MSMQ-Container
State       : Disabled

FeatureName : MSMQ-DCOMProxy
State       : Disabled

FeatureName : MSMQ-Server
State       : Disabled

FeatureName : MSMQ-ADIntegration
State       : Disabled

FeatureName : MSMQ-HTTP
State       : Disabled

FeatureName : MSMQ-Multicast
State       : Disabled

FeatureName : MSMQ-Triggers
State       : Disabled

FeatureName : IIS-CertProvider
State       : Disabled

FeatureName : IIS-WindowsAuthentication
State       : Disabled

FeatureName : IIS-DigestAuthentication
State       : Disabled

FeatureName : IIS-ClientCertificateMappingAuthentication
State       : Disabled

FeatureName : IIS-IISCertificateMappingAuthentication
State       : Disabled

FeatureName : IIS-ODBCLogging
State       : Disabled

FeatureName : SMB1Protocol-Deprecation
State       : Disabled

FeatureName : MediaPlayback
State       : Enabled

FeatureName : WindowsMediaPlayer
State       : Enabled

FeatureName : DirectoryServices-ADAM-Client
State       : Disabled

FeatureName : SmbDirect
State       : Enabled

FeatureName : AppServerClient
State       : Disabled

FeatureName : MSRDC-Infrastructure
State       : Enabled

FeatureName : NetFx4-AdvSrvs
State       : Enabled

FeatureName : NetFx4Extended-ASPNET45
State       : Disabled

FeatureName : HostGuardian
State       : Disabled

FeatureName : Printing-PrintToPDFServices-Features
State       : Enabled

FeatureName : Recall
State       : Enabled

FeatureName : SearchEngine-Client-Package
State       : Enabled

FeatureName : Microsoft-RemoteDesktopConnection
State       : Enabled

FeatureName : HypervisorPlatform
State       : Disabled

FeatureName : Microsoft-Windows-Subsystem-Linux
State       : Enabled

FeatureName : MicrosoftWindowsPowerShellV2Root
State       : Enabled

FeatureName : MicrosoftWindowsPowerShellV2
State       : Enabled

FeatureName : LegacyComponents
State       : Disabled

FeatureName : DirectPlay
State       : Disabled

FeatureName : Printing-Foundation-Features
State       : Enabled

FeatureName : Printing-Foundation-InternetPrinting-Client
State       : Enabled

FeatureName : Printing-Foundation-LPDPrintService
State       : Disabled

FeatureName : Printing-Foundation-LPRPortMonitor
State       : Disabled

FeatureName : Microsoft-Hyper-V-All
State       : Disabled

FeatureName : Microsoft-Hyper-V
State       : Disabled

FeatureName : Microsoft-Hyper-V-Tools-All
State       : Disabled

FeatureName : Microsoft-Hyper-V-Management-PowerShell
State       : Disabled

FeatureName : Microsoft-Hyper-V-Hypervisor
State       : Disabled

FeatureName : Microsoft-Hyper-V-Services
State       : Disabled

FeatureName : Microsoft-Hyper-V-Management-Clients
State       : Disabled

FeatureName : Client-DeviceLockdown
State       : Disabled

FeatureName : Client-EmbeddedShellLauncher
State       : Disabled

FeatureName : Client-EmbeddedBootExp
State       : Disabled

FeatureName : Client-EmbeddedLogon
State       : Disabled

FeatureName : Client-KeyboardFilter
State       : Disabled

FeatureName : Client-UnifiedWriteFilter
State       : Disabled

FeatureName : Containers-DisposableClientVM
State       : Disabled

FeatureName : Containers-Server-For-Application-Guard
State       : Disabled

FeatureName : HyperV-KernelInt-VirtualDevice
State       : Disabled

FeatureName : HyperV-Guest-KernelInt
State       : Disabled

FeatureName : DataCenterBridging
State       : Disabled

FeatureName : ServicesForNFS-ClientOnly
State       : Disabled

FeatureName : ClientForNFS-Infrastructure
State       : Disabled

FeatureName : NFS-Administration
State       : Disabled

FeatureName : Containers
State       : Disabled

FeatureName : Containers-HNS
State       : Disabled

FeatureName : Containers-SDN
State       : Disabled

FeatureName : SMB1Protocol
State       : Disabled

FeatureName : SMB1Protocol-Client
State       : Disabled

FeatureName : SMB1Protocol-Server
State       : Disabled

FeatureName : MultiPoint-Connector
State       : Disabled

FeatureName : MultiPoint-Connector-Services
State       : Disabled

FeatureName : MultiPoint-Tools
State       : Disabled

@leecher1337 commented on GitHub (Nov 4, 2024): ``` PS C:\WINDOWS\system32> Get-WindowsOptionalFeature -Online FeatureName : Windows-Defender-Default-Definitions State : Disabled FeatureName : Printing-XPSServices-Features State : Enabled FeatureName : TelnetClient State : Disabled FeatureName : TFTP State : Disabled FeatureName : TIFFIFilter State : Disabled FeatureName : VirtualMachinePlatform State : Enabled FeatureName : Windows-Identity-Foundation State : Disabled FeatureName : Client-ProjFS State : Disabled FeatureName : SimpleTCP State : Disabled FeatureName : WorkFolders-Client State : Enabled FeatureName : NetFx3 State : DisabledWithPayloadRemoved FeatureName : WCF-HTTP-Activation State : Disabled FeatureName : WCF-NonHTTP-Activation State : Disabled FeatureName : IIS-WebServerRole State : Disabled FeatureName : IIS-WebServer State : Disabled FeatureName : IIS-CommonHttpFeatures State : Disabled FeatureName : IIS-HttpErrors State : Disabled FeatureName : IIS-HttpRedirect State : Disabled FeatureName : IIS-ApplicationDevelopment State : Disabled FeatureName : IIS-Security State : Disabled FeatureName : IIS-RequestFiltering State : Disabled FeatureName : IIS-NetFxExtensibility State : Disabled FeatureName : IIS-NetFxExtensibility45 State : Disabled FeatureName : IIS-HealthAndDiagnostics State : Disabled FeatureName : IIS-HttpLogging State : Disabled FeatureName : IIS-LoggingLibraries State : Disabled FeatureName : IIS-RequestMonitor State : Disabled FeatureName : IIS-HttpTracing State : Disabled FeatureName : IIS-URLAuthorization State : Disabled FeatureName : IIS-IPSecurity State : Disabled FeatureName : IIS-Performance State : Disabled FeatureName : IIS-HttpCompressionDynamic State : Disabled FeatureName : IIS-WebServerManagementTools State : Disabled FeatureName : IIS-ManagementScriptingTools State : Disabled FeatureName : IIS-IIS6ManagementCompatibility State : Disabled FeatureName : IIS-Metabase State : Disabled FeatureName : WAS-WindowsActivationService State : Disabled FeatureName : WAS-ProcessModel State : Disabled FeatureName : WAS-NetFxEnvironment State : Disabled FeatureName : WAS-ConfigurationAPI State : Disabled FeatureName : IIS-HostableWebCore State : Disabled FeatureName : WCF-Services45 State : Enabled FeatureName : WCF-HTTP-Activation45 State : Disabled FeatureName : WCF-TCP-Activation45 State : Disabled FeatureName : WCF-Pipe-Activation45 State : Disabled FeatureName : WCF-MSMQ-Activation45 State : Disabled FeatureName : WCF-TCP-PortSharing45 State : Enabled FeatureName : IIS-StaticContent State : Disabled FeatureName : IIS-DefaultDocument State : Disabled FeatureName : IIS-DirectoryBrowsing State : Disabled FeatureName : IIS-WebDAV State : Disabled FeatureName : IIS-WebSockets State : Disabled FeatureName : IIS-ApplicationInit State : Disabled FeatureName : IIS-ISAPIFilter State : Disabled FeatureName : IIS-ISAPIExtensions State : Disabled FeatureName : IIS-ASPNET State : Disabled FeatureName : IIS-ASPNET45 State : Disabled FeatureName : IIS-ASP State : Disabled FeatureName : IIS-CGI State : Disabled FeatureName : IIS-ServerSideIncludes State : Disabled FeatureName : IIS-CustomLogging State : Disabled FeatureName : IIS-BasicAuthentication State : Disabled FeatureName : IIS-HttpCompressionStatic State : Disabled FeatureName : IIS-ManagementConsole State : Disabled FeatureName : IIS-ManagementService State : Disabled FeatureName : IIS-WMICompatibility State : Disabled FeatureName : IIS-LegacyScripts State : Disabled FeatureName : IIS-FTPServer State : Disabled FeatureName : IIS-FTPSvc State : Disabled FeatureName : IIS-FTPExtensibility State : Disabled FeatureName : MSMQ-Container State : Disabled FeatureName : MSMQ-DCOMProxy State : Disabled FeatureName : MSMQ-Server State : Disabled FeatureName : MSMQ-ADIntegration State : Disabled FeatureName : MSMQ-HTTP State : Disabled FeatureName : MSMQ-Multicast State : Disabled FeatureName : MSMQ-Triggers State : Disabled FeatureName : IIS-CertProvider State : Disabled FeatureName : IIS-WindowsAuthentication State : Disabled FeatureName : IIS-DigestAuthentication State : Disabled FeatureName : IIS-ClientCertificateMappingAuthentication State : Disabled FeatureName : IIS-IISCertificateMappingAuthentication State : Disabled FeatureName : IIS-ODBCLogging State : Disabled FeatureName : SMB1Protocol-Deprecation State : Disabled FeatureName : MediaPlayback State : Enabled FeatureName : WindowsMediaPlayer State : Enabled FeatureName : DirectoryServices-ADAM-Client State : Disabled FeatureName : SmbDirect State : Enabled FeatureName : AppServerClient State : Disabled FeatureName : MSRDC-Infrastructure State : Enabled FeatureName : NetFx4-AdvSrvs State : Enabled FeatureName : NetFx4Extended-ASPNET45 State : Disabled FeatureName : HostGuardian State : Disabled FeatureName : Printing-PrintToPDFServices-Features State : Enabled FeatureName : Recall State : Enabled FeatureName : SearchEngine-Client-Package State : Enabled FeatureName : Microsoft-RemoteDesktopConnection State : Enabled FeatureName : HypervisorPlatform State : Disabled FeatureName : Microsoft-Windows-Subsystem-Linux State : Enabled FeatureName : MicrosoftWindowsPowerShellV2Root State : Enabled FeatureName : MicrosoftWindowsPowerShellV2 State : Enabled FeatureName : LegacyComponents State : Disabled FeatureName : DirectPlay State : Disabled FeatureName : Printing-Foundation-Features State : Enabled FeatureName : Printing-Foundation-InternetPrinting-Client State : Enabled FeatureName : Printing-Foundation-LPDPrintService State : Disabled FeatureName : Printing-Foundation-LPRPortMonitor State : Disabled FeatureName : Microsoft-Hyper-V-All State : Disabled FeatureName : Microsoft-Hyper-V State : Disabled FeatureName : Microsoft-Hyper-V-Tools-All State : Disabled FeatureName : Microsoft-Hyper-V-Management-PowerShell State : Disabled FeatureName : Microsoft-Hyper-V-Hypervisor State : Disabled FeatureName : Microsoft-Hyper-V-Services State : Disabled FeatureName : Microsoft-Hyper-V-Management-Clients State : Disabled FeatureName : Client-DeviceLockdown State : Disabled FeatureName : Client-EmbeddedShellLauncher State : Disabled FeatureName : Client-EmbeddedBootExp State : Disabled FeatureName : Client-EmbeddedLogon State : Disabled FeatureName : Client-KeyboardFilter State : Disabled FeatureName : Client-UnifiedWriteFilter State : Disabled FeatureName : Containers-DisposableClientVM State : Disabled FeatureName : Containers-Server-For-Application-Guard State : Disabled FeatureName : HyperV-KernelInt-VirtualDevice State : Disabled FeatureName : HyperV-Guest-KernelInt State : Disabled FeatureName : DataCenterBridging State : Disabled FeatureName : ServicesForNFS-ClientOnly State : Disabled FeatureName : ClientForNFS-Infrastructure State : Disabled FeatureName : NFS-Administration State : Disabled FeatureName : Containers State : Disabled FeatureName : Containers-HNS State : Disabled FeatureName : Containers-SDN State : Disabled FeatureName : SMB1Protocol State : Disabled FeatureName : SMB1Protocol-Client State : Disabled FeatureName : SMB1Protocol-Server State : Disabled FeatureName : MultiPoint-Connector State : Disabled FeatureName : MultiPoint-Connector-Services State : Disabled FeatureName : MultiPoint-Tools State : Disabled ```
Author
Owner

@lhecker commented on GitHub (Nov 4, 2024):

You can find the feature with Get-WindowsCapability -Online. You should be able to add it with Add-WindowsCapability -Online -Name "Microsoft.Windows.Console.Legacy~~~~".

(I believe we're using a "capability" because they're the recommended way for "features on demand": https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/features-on-demand-v2--capabilities
I've just realized the irony of calling it a "feature on demand" when there's a split between "features" and "capabilities" in the dism tool and powershell functions. Heh.)

@lhecker commented on GitHub (Nov 4, 2024): You can find the feature with `Get-WindowsCapability -Online`. You should be able to add it with `Add-WindowsCapability -Online -Name "Microsoft.Windows.Console.Legacy~~~~"`. (I believe we're using a "capability" because they're the recommended way for "features on demand": https://learn.microsoft.com/en-us/windows-hardware/manufacture/desktop/features-on-demand-v2--capabilities I've just realized the irony of calling it a "_feature_ on demand" when there's a split between "features" and "capabilities" in the dism tool and powershell functions. Heh.)
Author
Owner

@DHowett commented on GitHub (Nov 4, 2024):

Oh, yeah, the whole "Capabilities" vs "Features" thing is wild.

FWIW, it shows up as an "OC" - optional component - which has both a capability and a package.

It shows up in the "modern" Optional Features page (yes, there's a few...) if you search for 'console':

Image

@DHowett commented on GitHub (Nov 4, 2024): Oh, yeah, the whole "Capabilities" vs "Features" thing is wild. FWIW, it shows up as an "OC" - optional component - which has both a capability and a package. It shows up in the "modern" Optional Features page (yes, there's a few...) if you search for 'console': ![Image](https://github.com/user-attachments/assets/a7642a44-1da1-432d-bbd8-971350b049cf)
Author
Owner

@leecher1337 commented on GitHub (Nov 4, 2024):

Oh... I didn't know about that (and about this confusion). Thank you for pointing to the right direction.

@leecher1337 commented on GitHub (Nov 4, 2024): Oh... I didn't know about that (and about this confusion). Thank you for pointing to the right direction.
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#360