-
Notifications
You must be signed in to change notification settings - Fork 0
Configuration
csharpDialog has no configuration file. Every dialog is configured entirely by its command line and, while running, by its command file. There is no settings file, no policy ADMX, and nothing in the registry that changes how a dialog is drawn.
What follows is the complete set of paths, registry keys and environment variables the code does read or write, plus the built-in defaults, so you know what to inspect and what to clean up.
| Path | Purpose |
|---|---|
%ProgramData%\ManagedNotifications\logs\csharpdialog.log |
Diagnostic log. Rolls at 5 MB, five generations kept as .1 … .5 (.1 is newest) |
%ProgramData%\ManagedUtilities\logs\csharpdialog.log |
Legacy log location. On first write, a new build moves this file and its rotated generations to the current location so history survives the upgrade |
%ProgramData%\csharpDialog\IconCache\ |
Icon download cache. Filenames are the first 16 hex characters of the URL's SHA-256 plus the original extension. Entries expire after 30 days by default |
The --commandfile path |
Created with a two-line comment header if absent, along with any missing parent directories |
%ProgramData%\ManagedInstalls\first_run_completed |
Timestamp marker, written only when a --firstrun/--autolaunch dialog closes and the directory already exists |
The log location is deliberately ManagedNotifications rather than the ManagedUtilities
root used by sibling tools; the dialog tools own their own root.
These are Cimian client paths, resolved from the standard folders rather than hardcoded
drive letters. They matter only when --cimian, --firstrun or --autolaunch is used.
| Path | Purpose |
|---|---|
%ProgramData%\ManagedInstalls\reports\run.log |
Primary log tailed by the Cimian monitor. The client truncates it at the start of each run, so it only ever holds the current run |
%ProgramData%\ManagedInstalls\logs\<yyyy-MM-dd>\<HHmm>\run.log |
Fallback: the newest per-session log is tailed when the report log is absent |
%ProgramData%\ManagedInstalls\manifests\*.yaml |
Scanned for managed_installs: lists to seed the dialog's list rows |
%ProgramData%\ManagedInstalls\icons\ |
Cimian's icon cache. Checked first when resolving an icon reference by basename |
%ProgramData%\ManagedInstalls\.cimian.bootstrap |
Present for the life of a bootstrap run; one of the first-run indicators |
%ProgramFiles%\Cimian\managedsoftwareupdate.exe |
Started by the monitor if no managedsoftwareupdate process is already running |
%USERPROFILE%\ntuser.dat |
Creation time is used as the profile-age first-run signal |
| Key | Value | Used for |
|---|---|---|
HKCU\Software\Microsoft\Windows\CurrentVersion\Themes\Personalize |
AppsUseLightTheme |
Dark mode. 0 means dark; anything else, or an unreadable key, means light |
HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\OOBE |
OOBECompleted, OOBECompletedTime
|
Post-OOBE detection; counts as first-run within one hour of completion |
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer |
FirstRun |
Windows first-login marker |
HKCU\Software\Microsoft\Windows\CurrentVersion\RunOnce |
value names | Any name containing FirstLogin, Welcome or Setup counts as a first-run signal |
HKLM\SOFTWARE\Cimian |
FirstRun, InstallDate
|
Cimian first-run marker; an install within the last two hours counts as first-run |
HKCU\SOFTWARE\Cimian |
FirstRun |
Per-user Cimian first-run marker |
HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters |
Domain |
Reported as DomainJoined in the detection result |
HKLM\SYSTEM\CurrentControlSet\Control\CloudDomainJoin\JoinInfo |
subkey count | Reported as AzureADJoined
|
HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\AAD\Storage |
presence | Reported as WorkplaceJoined
|
The join status is recorded in the detection result and logged; it does not change what the dialog shows.
Only when a first-run dialog completes:
| Key | Values |
|---|---|
HKCU\SOFTWARE\Cimian |
FirstRun = 0, FirstRunCompleted = yyyy-MM-dd HH:mm:ss
|
HKLM\SOFTWARE\Cimian |
FirstRun = 0, LastUserFirstRun = yyyy-MM-dd HH:mm:ss — attempted, skipped silently without admin rights |
The MSI additionally writes HKLM\Software\csharpDialog with InstallPath and Version.
Nothing reads those; they are the installer's own record.
csharpDialog itself reads no environment variables. Two are read by the build script:
| Variable | Used by | Meaning |
|---|---|---|
SIGNING_CERT_CN |
build.ps1 |
Subject name passed to signtool /n. Falls back to a placeholder that will fail to match a certificate |
SIGNTOOL_PATH / SIGNTOOL
|
build.ps1 |
Path to signtool.exe, or to the directory containing it, when it is not on PATH |
The values a dialog starts with when the corresponding flag is not given:
| Setting | Default | Where it comes from |
|---|---|---|
| Title | empty | Configuration default |
| Message | empty | Configuration default |
| Button 1 text | OK |
Added automatically when no button flag is present |
| Window width | 750 px | The window's XAML (the configuration model's own 450 px default is not what dialog.exe shows) |
| Window height | 1000 px | The window's XAML |
| Minimum size | 500 × 400 px | The window's XAML |
| Fullscreen host cap | 850 × 1200 px | The overlay's XAML |
| Progress maximum | 100 | Fixed in the window's XAML; --progress-max does not change it |
| Progress bar visible | no | Turned on by --progress, --progresstext or --firstrun
|
| List visible | no | Turned on by --listitem or --firstrun
|
| Timeout | none | Dialog waits indefinitely |
| Topmost | off | The overlay used by --fullscreen/--kiosk is always topmost |
| Theme | follows the system light/dark setting | Registry, above |
| Background / text colour, font |
#f8f9fa / #2c3e50, Segoe UI 14 |
Configuration defaults; not applied by dialog.exe
|
| Icon cache expiry | 30 days |
IconCacheService constructor default |
| Icon download timeout | 10 s | IconCacheService |
| Command-file debounce | 100 ms | CommandFileMonitor |
| Cimian log poll | 2 s timer plus a 500 ms change debounce | CimianMonitor |
The source contains a full JSON dialog schema — title, message, buttons[],
progress, listItems[], styling, behavior, and a multi-step workflow — with a
parser and a validator. It is not reachable. No CLI flag loads it, and the window's
config: command handler returns false without doing anything.
Treat it as an unfinished feature, not as configuration. If you are looking for the
swiftDialog --jsonfile equivalent, it does not exist yet; build the command line, or
generate a command file, from your script instead.
The same applies to the four built-in themes (corporate, dark, modern,
enterprise) and the setstyle styling layer: they are implemented in the core library
but no command or flag routes to them, and setstyle is not even in the command parser's
accepted verb list.
csharpDialog — MIT licensed — windowsadmins/csharpdialog
Reference
Guides
Internals
Help