Version History

Tcl Windows API extension version history


Summarizes the list of changes for each version of TWAPI.

Version 4.4.0

  • Added registry module.
  • Added recycle_files.
  • Added set_service_delayed_start.
  • Added -class option to shell_execute for non-default handlers.
  • Support for incomplete client credentials in TLS connections. Client certificate will be retrieved from current credentials if requested by server and not specified to tls_socket.
  • Fixed send_keys to be more compatible with VB SendKeys.

Version 4.3.5

Version 4.2.12

Version 4.1.27

The major change in this release is support for writing COM servers in Tcl.

Version 4.0

Major changes in this release are support for Windows event tracing, new Windows event logging API, SSL/TLS sockets, greatly enhanced support for CryptoAPI including certificate handling, access to performance counters, enhancements to the COM module and architectural changes for modularity and run-time performance.

Make a special note of the list of Incompatible Changes at the end of this section. Some of these differences apply to prior 4.0 betas as well.


The following tables list incompatibilities and potential incompatibilities with respect to TWAPI 3.1.

Base module

debuglog Calling interface has changed.
get_build_config Return value format and content has changed.
try Removed to prevent conflicts with the try command in Tcl 8.6. Use trap instead. The errorCode, errorResult and errorInfo variables are no longer brought into scope automatically in onerror clauses.

Users and Groups

get_global_groups get_global_group_members get_local_groups get_local_group_members get_users Commands return record arrays instead of a list when the -level option is used. Field and optin names have been changed for consistency.
get_user_local_groups_recursive Deprecated. Use get_user_local_groups with the -recurse flag instead.

Network configuration

address_to_hostname Removed. Use the resolve_address command instead.
flush_arp_tables Takes interface names as arguments instead of interface indices.
get_arp_table Returns the ARP table as a record array. Options -ifindex and -validonly are no longer available. Use record array filtering instead.
get_ip_addresses Was deprecated. Now removed Use get_system_ipaddrs instead.
get_netif_count, get_netif6_count Removed. Returned internal driver interface information which was misleading in terms of the interfaces actually visible at the application level.
get_netif_indices get_netif6_indices Removed. Use interface names as returned by get_network_adapters instead.
get_tcp_connections get_udp_connections Return connections as record arrays instead of lists.
hostname_to_address Removed. Use the resolve_hostname command instead.


COM SAFEARRAY Multidimensional arrays are returned as nested lists. In 3.1, they were returned as a single flat list.

Network Shares and Lan Manager

find_lm_connections find_lm_sessions find_lm_open_files get_client_shares get_shares Commands return record arrays instead of a list when the -level option is used. Field and option names have been changed for consistency.


get_multiple_service_status get_dependent_service_status Changed to return record arrays.

Device module

device_ioctl Calling interface has changed.

Windows Shell

file_properties_dialog printer_properties_dialog volume_properties_dialog Removed. Use shell_object_properties_dialog instead.
shell_object_properties_dialog Defaults the object type to file instead of attempting to guess the type.
TwapiThemeDefineValue Removed.


get_logical_drives Removed. Use find_logical_drives instead.

Processes and Threads

get_process_info The -toplevels option is no longer available. Use get_toplevel_windows -pids instead. Also, rate based performance options have been removed. Equivalent functionality is available through performance counters commands.
get_thread_info Rate based performance options have been removed. Equivalent functionality is available through performance counters commands.
get_device_drivers Changed to return record arrays.

System module

get_active_processor_mask Removed. Use get_processor_group_configuration instead.
get_processor_info Performance related options have been removed. Equivalent functionality is available through pdh_system_performance_query. The command now returns information about the current processor group, not the whole system.
get_system_info Removed. Equivalent functionality is available through the pdh_system_performance_query, get_system_sid and get_system_uptime commands.
large_system_time_to_timelist Returns an additional element - the day of the week.

Security and CryptoAPI

Password handling Many commands which take a password as an argument now expect it to be passed in encrypted form as returned by read_credentials, credentials_dialog and conceal. Unencrypted forms of passwords are still accepted by existing commands but are deprecated and support will be dropped in a future release. Commands new in 4.0 will only work with the new encrypted password forms.
SSPI interface API has been completely redone (post-4.0b23) and commands in older versions are no longer present.


enumerate_printers Changed to return record arrays.

Version 3.1

Note: Make sure you read list of incompatible changes at the end of this section.

Version 3.0

Version 2.2

Version 2.1

  • Built desktop and server specific TWAPI packages containing a subset of the TWAPI commands with a smaller footprint. Reduced footprint of full TWAPI package as well.
  • Added recycle_file.
  • Added error notifications to begin_filesystem_monitor.
  • Added options -foundcodepage, -foundlangid and -datetime to get_file_version_resource.
  • Added Wow64EnableWow64FsRedirection, Wow64DisableWow64FsRedirection, and Wow64RevertWow64FsRedirection.
  • Added new formats to get_current_user.
  • Added SHChangeNotify, CryptAcquireContext, CryptReleaseContext, and CryptGenRandom. No Tcl wrappers for these.

Version 2.0

Version 1.1

Version 1.0

First official release.


Copyright © 2003-2020 Ashok P. Nadkarni

Tcl Windows API 4.4.0