{"id":51395771,"url":"https://github.com/ntoskrnl7/win32-ex","last_synced_at":"2026-07-04T02:06:56.373Z","repository":{"id":39746387,"uuid":"353258896","full_name":"ntoskrnl7/win32-ex","owner":"ntoskrnl7","description":"Win32 API Experimental(or Extension) features","archived":false,"fork":false,"pushed_at":"2022-11-18T03:46:31.000Z","size":390,"stargazers_count":28,"open_issues_count":0,"forks_count":7,"subscribers_count":3,"default_branch":"main","last_synced_at":"2023-03-03T19:58:18.117Z","etag":null,"topics":["c","cpp","cpp98-compatible","easy-to-use","experimental","experimental-project","header-only","kernel32","modern-cpp","system","system-programming","vs2008","vs2010","win32","win32api","windows","windows-desktop"],"latest_commit_sha":null,"homepage":"","language":"C++","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ntoskrnl7.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2021-03-31T07:01:45.000Z","updated_at":"2023-01-21T23:08:59.000Z","dependencies_parsed_at":"2023-01-21T04:00:33.665Z","dependency_job_id":null,"html_url":"https://github.com/ntoskrnl7/win32-ex","commit_stats":null,"previous_names":[],"tags_count":null,"template":null,"template_full_name":null,"purl":"pkg:github/ntoskrnl7/win32-ex","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fwin32-ex","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fwin32-ex/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fwin32-ex/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fwin32-ex/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ntoskrnl7","download_url":"https://codeload.github.com/ntoskrnl7/win32-ex/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ntoskrnl7%2Fwin32-ex/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":35107508,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-05-26T15:22:16.424Z","status":"online","status_checked_at":"2026-07-04T02:00:05.987Z","response_time":113,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["c","cpp","cpp98-compatible","easy-to-use","experimental","experimental-project","header-only","kernel32","modern-cpp","system","system-programming","vs2008","vs2010","win32","win32api","windows","windows-desktop"],"created_at":"2026-07-04T02:06:56.266Z","updated_at":"2026-07-04T02:06:56.352Z","avatar_url":"https://github.com/ntoskrnl7.png","language":"C++","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Win32Ex\n\nWin32 API Experimental(or Extension) features.\n\n[![CMake](https://github.com/ntoskrnl7/win32-ex/actions/workflows/cmake.yml/badge.svg)](https://github.com/ntoskrnl7/win32-ex/actions/workflows/cmake.yml)\n[![MSYS2](https://github.com/ntoskrnl7/win32-ex/actions/workflows/msys2.yml/badge.svg)](https://github.com/ntoskrnl7/win32-ex/actions/workflows/msys2.yml)\n![GitHub](https://img.shields.io/github/license/ntoskrnl7/win32-ex)\n![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/ntoskrnl7/win32-ex)\n![Windows 8+](https://img.shields.io/badge/Windows-8+-blue?logo=windows\u0026logoColor=white)\n![Visual Studio 2008 SP1+](https://img.shields.io/badge/Visual%20Studio-2008%20SP1+-682270?logo=visualstudio\u0026logoColor=682270)\n![MSYS2 MSYS](https://img.shields.io/badge/MSYS2%20-MSYS-magenta.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAA1VBMVEWJTISNUoizi6+xia6KTYWMUYeoeqSicZ6RWIz7+fv///+9m7uJTYTezd3ax9ijdJ/l1+SqfqbUvtPVv9OKToXezNzQuM6TW478+vz38/ebZ5acaJf//v/NtMvBob6+nLuwh63Qt87x6fDz7fLRus+OU4n18PTm2uW/nbzs4+zj1OK0jbH+/f7+/v759/mQV4zm2eXz7fPz7PKMUIfp3ujNssq7mLjBoL7Hq8X9+/2XYpPx6vGLT4b6+PrTvNGPVouQV4uuhKuLUIahcJ2VXpGsgaiRWY0Ag/KpAAAAAWJLR0QKaND0VgAAAAd0SU1FB+YFGwwlNxplgV0AAACaSURBVBjTjc9HFoIADATQwQqDvYsdsYEFRVHB3u5/JGkHIJu8+Yt5CRBrhEQy5a10JhuBKFEGcnkWIiiSJaBMViKoklINdbIR5marTSqdLtkLoc8BORypY2pBnkxnCqlJ8wX1AGQawpKr9cakJPpHbHcW9uTB77Y9sHkETjw7MEhXwMU1BcC53gBLp3rH4/nyi94f//bvL8ajfz3MDQMfR5tdAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA1LTI3VDEyOjM3OjU1KzAwOjAwqTZC/AAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNS0yN1QxMjozNzo1NSswMDowMNhr+kAAAAAASUVORK5CYII=)\n![MSYS2 MinGW 32 bit](https://img.shields.io/badge/MSYS2-MinGW%2032-white.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAzFBMVEV0h4d5i4ulsbGjsLB1iIh4ioqYpqaRoKB9j4/6+/v///+yvLx1h4fY3t7T2dmToqLg5OSbqKjN1NR2iIjY3d3Iz89/kZH7/Pz29/eJmZmKmpr+///Fzc22wMCyvb2ir6/Hz8/u8PDx8/PJ0NB5jIzz9fXi5ub7+/uzvr7p7Oze4uKns7N4i4v9/v7+/v74+fnw8vJ3iorl6enEzMyvurq1v7++x8f8/f2Flpbv8fF2iYn6+vrL0tJ8jo6gra13iYmQn5+Ck5Odqqp+j48jrK5jAAAAAWJLR0QKaND0VgAAAAd0SU1FB+YFGwwlNxplgV0AAACaSURBVBjTjc9HFoIADATQscNgxYodUFTAgqKCivX+d5J2ALLJm7+YlwCZJpcvFMNVKldSEERKQLXGegoNsgm0SDkFmRTb6JDdJPf6A1IZjshxAhNOydlc1ajHebE0FFJfrTc0Y5Bo2Vvu9oJBUQizrR0cHMlT1O2G4PIMXHj1YJG+jZtv2IB3fwCOSTVA8HxFRe9PdPv3l+HRP06iDTTK47P9AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA1LTI3VDEyOjM3OjU0KzAwOjAwD0FJSAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNS0yN1QxMjozNzo1NCswMDowMH4c8fQAAAAASUVORK5CYII=)\n![MSYS2 MinGW 64 bit](https://img.shields.io/badge/MSYS2-MinGW%2064-blue.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAA2FBMVEUnZZcvaptzm7xxmropZpgtaZpfjbJUha01b573+vv///+HqcUoZpfD1OK7z95Xh67P3ehjkLSxx9myyNoqZ5jC1OKpwtY5cqD5+/zx9fhHfKZJfaf+/v+kvtONrsiIqsVumLmpwdXl7PLp7/Srw9cva5vs8vbS3+n4+vyJq8bd5+/L2uZ2nb0uapr8/f79/v71+PrR3unq8PXo7/QsaZnX4+yjvdOCpsONrciZt877/P1BeKTm7fMqZ5n3+fuvxtgzbZ00bp1rlbgraJlShKw9daJnkrY2cJ5w8qACAAAAAWJLR0QKaND0VgAAAAd0SU1FB+YFGwwlNxplgV0AAACaSURBVBjTjc9HFoIADATQscNg72JHrICKoqjY6/1vJO0AZJM3fzEvASJNLJ5IuiuVzoQgiJSAbI75EApkESiR5RAqpFhFjawHudFskXK7Q3YD6LFPDobKiKqfx5OpTKqz+YKaDxJ1Y8nVWjApCm42NlsLO3Lvddsu2DwAR54c6OTZwOVsGoBzvQGWRuWOx/PlFb0/3u3fX4RH/4SWDdOSsTi4AAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA1LTI3VDEyOjM3OjU0KzAwOjAwD0FJSAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNS0yN1QxMjozNzo1NCswMDowMH4c8fQAAAAASUVORK5CYII=)\n![MSYS2 Clang 32 bit](https://img.shields.io/badge/MSYS2-Clang%2032-orange.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAz1BMVEW+ZD7AaUXVm4LUmYC/ZUDAaEPPjHDMhGbCbkv9+vj////bqZS+ZT/t1MnrzsLNh2nw3NTQj3Tox7noyLq/ZkDt08nlwrPDcU79+/r79fLIe1vIfFz//v7kvq7drprTl37lwbL37Oj47+vmw7TBakb58u7x39f9+vncq5b15+Hv2tHWnYTAaUT+/f3+/v38+PbCbkrx3tb58Ozz4tvjvazappDdrZngtqT+/PvGd1X37ei/ZkH8+ffnxbfCbUnSlXu/Z0LLg2XFdFLRknfDb0xS4XEfAAAAAWJLR0QKaND0VgAAAAd0SU1FB+YFGwwlNm1iscsAAACaSURBVBjTjY9XEoIAFANjQSHYu1gBK2BBRQUV6/3PJO0AvJ/M7kcmD0h1mWwuH4RQKCZClCgDpTIriaiSNaBONhLRJKUW2mQn5m6vTyqDITmKxZgyOZmqGvWIZ/OFQurL1ZpGJGSa1obb3d6mJAZsHTQBR/IUdjuBcHgGLry6MEnPws2zLcC9P4KlBlUf/vMVFr0/4fbvL8Wjf1ClDS2qO1moAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA1LTI3VDEyOjM3OjU0KzAwOjAwD0FJSAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNS0yN1QxMjozNzo1NCswMDowMH4c8fQAAAAASUVORK5CYII=)\n![MSYS2 Clang 64 bit](https://img.shields.io/badge/MSYS2-Clang%2064-orange.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAz1BMVEW+ZD7AaUXVm4LUmYC/ZUDAaEPPjHDMhGbCbkv9+vj////bqZS+ZT/t1MnrzsLNh2nw3NTQj3Tox7noyLq/ZkDt08nlwrPDcU79+/r79fLIe1vIfFz//v7kvq7drprTl37lwbL37Oj47+vmw7TBakb58u7x39f9+vncq5b15+Hv2tHWnYTAaUT+/f3+/v38+PbCbkrx3tb58Ozz4tvjvazappDdrZngtqT+/PvGd1X37ei/ZkH8+ffnxbfCbUnSlXu/Z0LLg2XFdFLRknfDb0xS4XEfAAAAAWJLR0QKaND0VgAAAAd0SU1FB+YFGwwlNm1iscsAAACaSURBVBjTjY9XEoIAFANjQSHYu1gBK2BBRQUV6/3PJO0AvJ/M7kcmD0h1mWwuH4RQKCZClCgDpTIriaiSNaBONhLRJKUW2mQn5m6vTyqDITmKxZgyOZmqGvWIZ/OFQurL1ZpGJGSa1obb3d6mJAZsHTQBR/IUdjuBcHgGLry6MEnPws2zLcC9P4KlBlUf/vMVFr0/4fbvL8Wjf1ClDS2qO1moAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA1LTI3VDEyOjM3OjU0KzAwOjAwD0FJSAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNS0yN1QxMjozNzo1NCswMDowMH4c8fQAAAAASUVORK5CYII=)\n![MSYS2 MinGW UCRT 64 bit](https://img.shields.io/badge/MSYS2-MinGW%20UCRT%2064-yellow.svg?logo=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAABGdBTUEAALGPC/xhBQAAACBjSFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAA2FBMVEWLexaPgB60qmizqGWMfBiOfxypnVKjlkaThCb7+vf///++tX2LfBff2r7b1ralmUrl4curoFfVz6vW0KyMfRne2r3Ry6OVhin8+/n39u+cjzmdkDv//v7OyJ3CuoW/tn6xpmPRyqLx7+Pz8ufSzKWQgB/19Ovn5M/7+/jAt4Dt6trj38e1q2uPfx3+/fz+/v36+fSSgyXm48708ujz8eaOfhvq59TNx5u8s3nCuYTIwZH9/PqZizLx7+SNfRr6+vbUzqiRgiOSgySvpF+NfhuilUWXiC6toltSFs3gAAAAAWJLR0QKaND0VgAAAAd0SU1FB+YFGwwlOIranMwAAACbSURBVBjTjc9HFoIADATQscNg72JHrIAFRVGxt/vfSNoByCZv/mJeAkSaWDyRdFcqnQlBECkB2RzzIRTIIlAiyyFUSLGKGlkPcqPZIuV2h+wG0GOfHAyVEVU/jydTmVRn8wU1HyTqxpKr9cakKLjZ2O4s7MmD1227YPMInHh2oJMXA9eLaQDO7Q5YGpUHnq+3V/T5erf/hAiP/gGUaw3YCIkmVAAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAyMi0wNS0yN1QxMjozNzo1NSswMDowMKk2QvwAAAAldEVYdGRhdGU6bW9kaWZ5ADIwMjItMDUtMjdUMTI6Mzc6NTUrMDA6MDDYa/pAAAAAAElFTkSuQmCC)\n![CMake 3.14+](https://img.shields.io/badge/CMake-3.14+-yellow.svg?logo=cmake\u0026logoColor=white)\n![C++ 03+](https://img.shields.io/badge/C++-03+-white.svg?logo=cplusplus\u0026logoColor=blue)\n\nIt is a library that helps to more easily implement tasks such as service program creation and process creation for each user account in Windows environment.\n\nIt is implemented with outdated syntax and features because it is also designed for use in legacy development environments (Visual Studio 2008 SP1).\n\n---\n\n## Requirements\n\n- Windows 8 or later\n- Visual Studio 2008 SP1 or later\n- MSYS2\n  - MSYS\n  - MinGW 32-bit\n  - MinGW 64-bit\n  - MinGW Clang 32-bit\n  - MinGW Clang 64-bit\n  - MinGW UCRT 64-bit\n\n---\n\n## Test Environments\n\n- Windows 10\n- MSYS2\n  - MSYS\n  - MinGW 32-bit\n  - MinGW 64-bit\n  - MinGW Clang 32-bit\n  - MinGW Clang 64-bit\n  - MinGW UCRT 64-bit\n- Visual Studio\n  - 2008 SP1\n  - 2010, 2012, 2017, 2019, 2022\n\n---\n\n## Contents\n\n- [Win32Ex](#win32ex)\n  - [Requirements](#requirements)\n  - [Test Environments](#test-environments)\n  - [Contents](#contents)\n  - [Features](#features)\n    - [System Services](#system-services)\n      - [Processes and Threads](#processes-and-threads)\n      - [Remote Desktop Services](#remote-desktop-services)\n      - [Services](#services)\n      - [Windows System Information](#windows-system-information)\n        - [Handles and Objects](#handles-and-objects)\n    - [Security and Identity](#security-and-identity)\n      - [Privileges](#privileges)\n      - [Access Tokens](#access-tokens)\n      - [Security Descriptors](#security-descriptors)\n      - [Security Identifiers](#security-identifiers)\n    - [Etc](#etc)\n      - [Optional](#optional)\n      - [Result](#result)\n      - [Win32 API Template](#win32-api-template)\n  - [Test](#test)\n    - [CMake](#cmake)\n  - [Usage](#usage)\n    - [CMakeLists.txt](#cmakeliststxt)\n    - [test.cpp](#testcpp)\n\n---\n\n## Features\n\n- **Headers :** Win32Ex.h\n\n### System Services\n\n- **Headers :** Win32Ex/System.h\n- [More](docs/system-services.md)\n\n#### Processes and Threads\n\n- **Headers :** Win32Ex/System/Process.h, Win32Ex/System/Process.hpp\n- [More](docs/procthread.md)\n\n#### Remote Desktop Services\n\n- **Headers :** Win32Ex/System/Session.hpp\n- [More](docs/termserv.md)\n\n#### Services\n\n- **Headers :** Win32Ex/System/Service.hpp\n- [More](docs/services.md)\n\n#### Windows System Information\n\n- [More](docs/sysinfo.md)\n\n##### Handles and Objects\n\n- **Headers :** Win32Ex/System/Object.h\n- [More](docs/sysinfo/handles-and-objects.md)\n\n### Security and Identity\n\n- **Headers :** Win32Ex/Security.h\n- [More](docs/secauthz.md)\n\n#### Privileges\n\n- **Headers :** Win32Ex/Security/Privilege.h, Win32Ex/Security/Privilege.hpp\n- [More](docs/secauthz/privileges.md)\n\n#### Access Tokens\n\n- **Headers :** Win32Ex/Security/Token.h, Win32Ex/Security/Token.hpp\n- [More](docs/secauthz/access-tokens.md)\n\n#### Security Descriptors\n\n- **Headers :** Win32Ex/Security/Descriptor.h\n- [More](docs/secauthz/security-descriptors.md)\n\n#### Security Identifiers\n\n- **Headers :** Security\\Sid.h\n- [More](docs/secauthz/security-identifiers.md)\n\n### Etc\n\n- [More](docs/etc.md)\n\n#### Optional\n\n- **Headers :** Win32Ex/Optional.hpp\n- [More](docs/etc/optional.md)\n\n#### Result\n\n- **Headers :** Win32Ex/Result.hpp\n- [More](docs/etc/result.md)\n\n#### Win32 API Template\n\n- [More](docs/etc/api-tmpl.md)\n\n---\n\n## Test\n\n### CMake\n\n- With MSYS2\n\n  ```bash\n  cd test\n  mkdir build \u0026\u0026 cd build\n  if [ \"$MSYSTEM\" = \"MSYS\" ]; then\n      cmake ..\n  else\n      cmake -G \"MinGW Makefiles\" ..\n  fi\n\n  cmake --build .\n\n  if [ \"$?\" -eq 0 ]; then\n      export LC_ALL=C; unset LANGUAGE\n      ctest . --verbose\n  fi\n  ```\n\n- With Visual Studio\n\n  ```batch\n  cd test\n  mkdir build\n  cd build\n  cmake ..\n  cmake --build .  -- /p:CharacterSet=Unicode\n  if errorlevel 0 ctest . --verbose -C Debug\n  ```\n\n## Usage\n\n*We usually recommend using CMake. However, if you are using Visual Studio directly, add **{This repository}/include** to the '**[Additional Include Directories](https://docs.microsoft.com/cpp/build/reference/i-additional-include-directories#to-set-this-compiler-option-in-the-visual-studio-development-environment\n)** property'.*\n\n### CMakeLists.txt\n\n```cmake\ncmake_minimum_required(VERSION 3.14 FATAL_ERROR)\n\n# create project\nproject(MyProject)\n\n# add executable\nadd_executable(tests tests.cpp)\n\n# add dependencies\ninclude(cmake/CPM.cmake)\nCPMAddPackage(\"gh:ntoskrnl7/win32-ex@0.8.23\")\n\n# link dependencies\ntarget_link_libraries(tests win32ex)\n```\n\n### test.cpp\n\n```C++\n#include \u003ciostream\u003e\n\n#include \u003cWin32Ex/System/Process.hpp\u003e\n#include \u003cWin32Ex/System/Service.hpp\u003e\n// or #include \u003cWin32Ex.h\u003e\n// or #include \u003cWin32Ex/System.h\u003e\n\nWin32Ex::System::Service SimpleService(\"SimpleSvc\");\n\nint main()\n{\n    std::cout \u003c\u003c Win32Ex::System::Process::All().size();\n\n    Win32Ex::System::Service::Instance\u003cSimpleService\u003e::Get()\n        .OnStart([]() {\n            // TODO\n        })\n        .OnStop([]() {\n            // TODO\n        })\n        .OnPause([]() {\n            // TODO\n        })\n        .OnContinue([]() {\n            // TODO\n        })\n        .OnError([](DWORD ErrorCode, PCSTR Message) {\n            // TODO\n        })\n        .Run();\n    return 0;\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fntoskrnl7%2Fwin32-ex","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fntoskrnl7%2Fwin32-ex","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fntoskrnl7%2Fwin32-ex/lists"}