himselfv / viper

Enhanced Windows Service manager application
29 stars 2 forks source link

Edit access flags for several services at once #11

Closed himselfv closed 7 years ago

himselfv commented 7 years ago

Original report by me.

Currently if you do "Edit security" for several services at once, it'll run the edit dialog for each service one by one.

It would be nice to have "multi-edit" feature:

  1. The dialog would be titled "Security settings for: (7 objects)"

  2. Minimal version: just show a warning and start with a blank slate, and whatever security is set, it will be applied to all selected services, overwriting whatever was there.

Smart version: remember original settings for each service, show common parts as "checked/unchecked", conflicting parts as grayed. Track which parts were changed during the editing and only apply those parts, leaving the rest of the flags for every service in the original state.

Smart version is probably impossible. I don't think it's possible to make checkboxes in the edit dialog grayed, and all this tracking would be too complicated anyway (in addition to checkboxes there are whole permission entries to be tracked!)

So smart version will probably not be implemented and is covered here just to have this explanation down on paper.

himselfv commented 7 years ago

On the second thought, it's probably impossible to do much here.

  1. We cannot do proper "merge securities, track changes, apply only changes" because the dialog does not support grayed checkboxes. Nor tracking changes. And it's too complicated to track multiple security entries, potentially for the same object, explicit or inherited.

  2. We can do "reset mode" where we start with a clean slate. But is there a situation where you want to do this? Apart from cleaning up what you broke by using that same reset mode.

And we can't just start with nil for security editor, functions want SECURITY_DESCRIPTOR so we have to initialize that and it's a pain.

I'm just going to write this off until there's a demand.