[PR #11222] Add a file for storing elevated-only state #28463

Closed
opened 2026-01-31 09:28:40 +00:00 by claunia · 0 comments
Owner

Original Pull Request: https://github.com/microsoft/terminal/pull/11222

State: closed
Merged: Yes


Summary of the Pull Request

This creates an elevated-state.json that lives in %LOCALAPPDATA% next to state.json, that's only writable when elevated. It doesn't use this file for anything, it just puts the framework down for use later.

It's just like ApplicationState. We'll use it the same way.

It's readable when unelevated, which is nice, but not writable. If you're dumb and try to write to the file when unelevated, it'll just silently do nothing.

If we try opening the file and find out the permissions are different, we'll blow the file away entirely. This is to prevent someone from renaming the original file (which they can do unelevated), then slapping a new file that's writable by them down in it's place.

References

  • We're going to use this in #11096, but these PRs need to be broken up.

PR Checklist

  • Closes nothing
  • I work here
  • Tests added/passed
  • Requires documentation to be updated - maybe? not sure we have docs on state.json at all yet

Validation Steps Performed

I've played with this much more in dev/migrie/f/non-terminal-content-elevation-warning

followed by #11308, #11310
**Original Pull Request:** https://github.com/microsoft/terminal/pull/11222 **State:** closed **Merged:** Yes --- ## Summary of the Pull Request This creates an `elevated-state.json` that lives in `%LOCALAPPDATA%` next to `state.json`, that's only writable when elevated. It doesn't _use_ this file for anything, it just puts the framework down for use later. It's _just like `ApplicationState`_. We'll use it the same way. It's readable when unelevated, which is nice, but not writable. If you're dumb and try to write to the file when unelevated, it'll just silently do nothing. If we try opening the file and find out the permissions are different, we'll _blow the file away entirely_. This is to prevent someone from renaming the original file (which they can do unelevated), then slapping a new file that's writable by them down in it's place. ## References * We're going to use this in #11096, but these PRs need to be broken up. ## PR Checklist * [x] Closes nothing * [x] I work here * [x] Tests added/passed * [ ] Requires documentation to be updated - maybe? not sure we have docs on `state.json` at all yet ## Validation Steps Performed I've played with this much more in `dev/migrie/f/non-terminal-content-elevation-warning` ###### followed by #11308, #11310
claunia added the pull-request label 2026-01-31 09:28:40 +00:00
Sign in to join this conversation.
No Label pull-request
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/terminal#28463