CMDebug 28.0:

 

The CMDebug and TCC-RT installers are built with a new version of Advanced Installer.

 

Many security, performance & size improvements.

 

CMDebug / IDE is now CET Shadow Stack compatible.

 

The GUI framework library has been updated.

 

Improved support for high resolution displays and multiple monitors.

 

The Scintilla edit control has been updated to version 5.1. The lexer (lexilla.dll) has been separated from the editor (scintilla.dll). There are a number of improvements in readability and speed for high resolution displays.

 

 

TCC-RT:

 

Many security, performance & size improvements.

 

TCC-RT is now CET Shadow Stack compatible.

 

TCC-RT file expansion now supports  "~\" (home directory) syntax. If the filename is ~, or begins with a ~\ (or ~/), TCC will substitute to the user's home directory, as defined by the HOME environment variable. (If HOME doesn't exist, TCC will look for %HOMEDRIVE + HOMEPATH.)  For example:

 

dir ~\

copy foo ~\foofolder

 

TCC-RT file expansion now supports the predefined Windows folders. The syntax is :foldername where foldername can be:

 

AccountPictures

AdminTools

AppCaptures

ApplicationShortcuts

CameraRoll

CDBurning

CommonAdminTools

CommonOEMLinks

CommonPrograms

CommonStartMenu

CommonStartMenuPlaces

CommonStartup

CommonTemplates

Contacts

Cookies

Desktop

DeviceMetadataStore

Documents

DocumentsLibrary

Downloads

Favorites

Fonts

GameTasks

History

ImplicitAppShortcuts

InternetCache

Libraries

Links

LocalAppData

LocalAppDataLow

LocalDocuments

LocalDownloads

LocalizedResourcesDir

LocalMusic

LocalPictures

LocalVideos

Music

MusicLibrary

Nethood

OneDrive

OriginalImages

PhotoAlbums

PicturesLibrary

Pictures

Playlists

PrintHood

Profile

ProgramData

ProgramFiles

ProgramFilesX64

ProgramFilesX86

ProgramFilesCommon

ProgramFilesCommonX64

ProgramFilesCommonX86

Programs

Public

PublicDesktop

PublicDocuments

PublicDownloads

PublicGameTasks

PublicLibraries

PublicMusic

PublicPictures

PublicRingtones

PublicUserTiles

PublicVideos

QuickLaunch

Recent

RecordedTVLibrary

ResourceDir

RetailDemo

Ringtones

RoamingAppData

RoamedTileImages

RoamingTiles

SampleMusic

SamplePictures

SamplePlayLists

SampleVideos

SavedGames

SavedPictures

SavedSearches

Screenshots

SearchHistory

SearchTemplates

SendTo

SidebarDefaultParts

SidebarParts

SkyDrive

SkyDriveCameraRoll

SkyDriveDocuments

SkyDrivePictures

StartMenu

Startup

System

SystemX86

Templates

UserPinned

UserProfiles

UserProgramFiles

UserProgramFilesCommon

Videos

VideosLibrary

Windows

 

These folder names can be used in any internal TCC-RT command that takes filenames. For example:

 

dir :downloads

copy picture.jpg :pictures\myfolder1\

 

 

Help:

 

The help is built with a new version (8.3) of Help & Manual.

 

The .chm help (obsolete, unsupported, and deprecated by Microsoft) has been changed to .ewriter format. An eWriter eBook is WebHelp stored in a single file, and the eWriter.exe app is used to display the help. The eWriter format combines the benefits of CHM and WebHelp, eliminating the disadvantages of both. It uses the Windows HTML rendering engine to display the content, with support for CSS3, HTML5, JavaScript and media. This will allow us (in future versions) to incorporate tutorials and videos in the help file.

 

The new eWriter format includes support for high-resolution displays (.chm does not).

 

Unlike .chm help files, The eWrite HELP can be opened from network drives on local networks.

 

Repeated calls to HELP will open in the same help window.

 

 

Updated Variable Functions:

 

@FILESIZE - Now supports returning the size of file streams. @FILESIZE now also supports retrieving file sizes for HTTP and HTTPS files. (Note that due to HTTP protocol limitations, you cannot use wildcards or scan subdirectories.)

 

 

Updated Commands:

 

ACTIVATE

 

FORCEMIN - Force the window to be minimized even if the thread that owns the window is not responding. 

 

VDESKTOP=id - Move the window to another virtual desktop. id can be either a desktop number (1-n), the GUID for that desktop, or the desktop name. See VDESKTOP for more details.

 

ASSOCIATE

 

/V:* - Displays all of the shell verbs and their commands for the specified extension.

 

DEL

 

If you are deleting a stream, DEL will check for a symlink and delete the stream from the linked file. (Windows does not support deleting a symlink'd stream.)

 

DIR

 

/\ - Display directory names with a trailing \.

 

ENUMSERVERS

 

/Domain=domain - The NetBIOS name of the domain to enumerate. If you do not specify a domain, ENUMSERVERS uses the primary domain.

 

IFTP

 

/K="..." - The CA signed client public key used when authenticating (SSH only). When authenticating via public key authentication this setting may be set to the CA signed client's public key. This is useful when the server has been configured to trust client keys signed by a particular CA. For example:

 

/K="[email protected] AAAAB3NzaC1yc2EAAAADAQABAAAB..."

 

The algorithm such as [email protected] in the above string is used as part of the authentication process. To use a different algorithm simply change this value. For instance all of the following are acceptable with the same signed public key:

 

[email protected] AAAAB3NzaC1yc2EAAAADAQABAAAB...

[email protected] AAAAB3NzaC1yc2EAAAADAQABAAAB...

[email protected] AAAAB3NzaC1yc2EAAAADAQABAAAB...

 

/T=nnn - If this is set, the socket's keep-alive option is enabled, and TCP keep-alive packets will be sent periodically to maintain the connection. nnn is the inactivity time in seconds before a TCP keep-alive packet is sent.

 

LIBRARY

 

You can now specify which library to use for a function name (allowing you to use the same function names in different libraries). To specify a particular library and function, use the syntax:

 

library$function

 

Where library is the library file name, and function the name of the function.

 

If you don't specify a library name, TCC will use the old format and use the first matching function name it finds in the library list.

 

/N - LIBRARY with no arguments will display the function names in the library list. If you specify /N and no other arguments, LIBRARY will show the library name + function name in the library$function format.

 

PDIR

 

/\ - Display directory names with a trailing \.

 

START

 

/VDESKTOP=id - Start the app on another virtual desktop. id can be either a desktop number (1-n), the GUID for that desktop, or the desktop name. See VDESKTOP for more details. Note that Windows doesn't have an API to actually start on another desktop, so TCC starts it on the local desktop and them immediately moves it -- so you'll see a flash when the window starts and then disappears.

 

TASKEND

 

The PID can be hex if it is prefixed with a leading 0x.

 

/Ne - Don't display errors.

 

/R - Delete the process tree (the specified process and all of its child processes).

 

TASKLIST

 

The PID can be hex if it is prefixed with a leading 0x.

 

/R - Show the process tree (the specified process and all of its child processes).

 

TPIPE

 

Textpipeengine64.dll has been updated to version 11.8.1.

 

/Simple has some new redaction filters which are designed to work inside restriction filters.

 

89 Remove diacritics

90 Mainframe dump

91 Redact x-over text

92 Redact x-over digits

94 Redact x-over non-blanks

95 Replace with blanks

96 Redact with pseudo NHS

97 Redact with pseudo SSN

98 Redact with pseudo bank number

 

TREE

 

/\ - Display directory names with a trailing \.

 

WINDOW

 

VDESKTOP=id - Move the window to another virtual desktop. id can be either a desktop number (1-n), the GUID for that desktop, or the desktop name. See VDESKTOP for more details.

 

WMIQUERY

 

WMIQUERY now supports remote queries. The namespace argument for remote servers will look like "\\remote-server\root\cimv2" (substitute your server name for "remote-server").

 

/USER=username - The user name to use for remote queries.

 

/PASSWORD=password - The password to use for remote queries.

 

/L - Don't separate records with a CR/LF. (This is probably only useful when you are querying single-line records.)

 

WSETTINGS

 

New settings dialogs (some require your system / device to be configured to support the option):

 

ActivityHistory

AdvancedDisplay

AppDiagnostics

AppVolume

Audio

AutomaticFileDownloads

Broadcasting

Clipboard

DeliveryOptimization

Documents

DownloadMaps

Encryption

EyeTracker

FindMyDevice

Fonts

GameBar

GameDVR

GameMode

GraphicsSettings

InkingAndTyping

Nightlight

Notifications

Phone

PhoneCalls

Pictures

RemoteDesktop

SharedExperiences

SigninOptions

Sound

Tasks

Touchpad

Troubleshoot

VideoPlayback

Videos

VoiceActivation

WiFiCalling

WindowsHelloFace

WindowsHelloFingerprint

WindowSecurity

YourPhone

 

 

New Commands:

 

LOCAL

 

Define variables that are local to a library function or to a batch file. The syntax is:

 

LOCAL var1, var2, ...

 

LOCAL will save the existing values of the specified environment variables (if any) and then delete the variable from the environment. You can then SET a new variable with that name; when the library function or batch file exits, the local variables are deleted from the environment and the previous values (if any) are restored.

 

SSHEXEC

 

The SSHEXEC command establishes a Secure Shell (SSH) connection to a server and starts up the user's default shell. Press Ctrl-C to disconnect from the other system. The syntax is:

 

SSHEXEC [/A /F filename /Gn /H fwhost /IPV6 /R port /S /T type /U user /P password] host /L name[:pssword] "command ..."

 

/A(utodetect firewall)

/F(ilename for host stdin)

/G (logging level)

/H (firewall host)

/IPv6        

/L (user:password)

/P (firewall password)

/R(emote port)

/S(tatus messages)

/T (firewall type)

/U (Firewall user name)

 

host - Host name

command - Command to pass to the default host shell

 

If you don't specify a username, SSHEXEC will use the current username. You can provide a password on the command line by appending it to the username (i.e., "User:Password"). If you don't provide a password, SSHEXEC will prompt for it.

 

If you want to do redirection on the remote system, enclose the command argument list in double quotes. The double quotes will be removed before passing the commands to the remote system.

 

SSHEXEC will display the host name & user name and prompt for a line of input, then send it to the host shell and return to the prompt to wait for the next line. SSHEXEC will display any output sent by the host to STDOUT and STDERR. When you type "exit" at the prompt, or the host disconnects SSHEXEC will exit.

 

VDESKTOP

 

Manage Windows 10 virtual desktops (requires Windows 10 build 21313 or later). VDESKTOP lets you create, remove, or switch desktops. The syntax is:

 

VDESKTOP [[/N="name"] /C [/W="file"] /R id /S [id] - +]

 

/CCreate a new desktop
/RRemove the specified desktop. Id can be a desktop number (1 - n) or the GUID for that desktop.
/SSwitch to the specified desktop. If id isn't specified, switch to the desktop created with /C. id can either be a desktop number (1 - n) or the GUID for that desktop.

 

/N="name"You can optionally specify a desktop name. If you don't specify a name, you need to use a desktop number (1 - n) or the desktop GUID.  Note that with the current Windows builds, the name is not updated in the Task View, though it is usable with subsequent VDESKTOP commands, and it will be displayed properly when the system is restarted.
/W="file"When used with /C, /W specifies the image file to use for the background wallpaper for the desktop. Note that with the current Windows builds, the background will not be updated until the system is restarted.

 

WMIRUN

 

Use WMI to run methods on a local or remote machine. You must be running in an elevated session. The syntax is:

 

WMIRUN /USER=user /PASSWORD=password /CLASS=classname /METHOD=methodname networkresource command

 

/USER=username - The user name to use for remote queries

 

/PASSWORD=password - The password to use for remote queries

 

/CLASS=classname - The WMI class name

 

/METHOD=methodname - The WMI method name

 

networkresource - WMI namespace. The namespace argument for remote servers will look something like "\\remote-server\root\cimv2" (substitute your server name for "remote-server").

 

command - The command you want WMI to run.

 

For example, this command terminates process 26568 on the local machine:

 

WMIRUN /method=Terminate /class=Win32_Process "\\.\root\CIMV2" Win32_Process.Handle="26568"