How to remove ProgID from other user accounts when uninstalling from Windows?

I am studying “how a modern Windows C ++ application should register its file types” with Windows (see C ++: how to correctly register and unregister file type associations for our application (programmatically) ).

And, after going through various MSDN articles on this subject, the summary is as follows:

  • The installer (elevated) must register the global ProgID HKLM \ Software \ Classes \ my-app.my-doc [.version] (for example, HKLM \ Software \ Classes \ TextPad.text)
  • The installer also sets up default associations for its document types (e.g. .myext) and points this to the aforementioned global ProgID in HKLM.
    NOTE. a user interface should be provided to allow the user to either accept all associations by default or configure which associations should be established.
  • An application working with a standard (non-elective) should provide a user interface that allows the current user to set their personal associations, as available in the installer, except that these associations are stored in HKCU \ Software \ Classes (per user, not on the machine )
  • Then, the UN installer is responsible for deleting all registered ProgIDs (but should leave only the actual file associations, since Windows is smart enough to handle associations that point to missing ProgIDs, and this is the specified MSDN behavior).

Thus, the scheme seems reasonable to me, unless I consider # 4: how does a remote user work under a higher value for this user account, removes any ProGIDs for each user created in step 3 for other users?

As I understand it, even in high security mode, the uninstaller cannot get into another user registry bush and delete items? Or could it be? Do I need to download each given user hive first? What are the rules here?

Thanks for any information you can offer!

EDIT: . ( )

+1
2

: MS , , - .foo → ? progID, , , " ProgID" - " ", ProgID, MS , .

: HKCR \.txt → HKCR\txtfile ()

: HKCR \.txt → HKCR\MyEditor.text.1 ()

, .txt TextPad: HKCU\Software\Classes \.txt → HKCR\TextPad.txt( , .txt- > MyEditor.text.1)

: HKCR \.txt x- > HKCR\MyEditor.text.1 (, HKCR\MyEditor.txt.1 )

, , , , .txt, , Microsoft .

, ...

+1

, . .

, , , .

+1

Source: https://habr.com/ru/post/1745321/


All Articles