Der Uhrzeitdialog wird auch nur als normaler Dialog gestartet. Bevor der Dialog angezeigt wird, wird eben ein Elevated
COM Object angefordert, was die
UAC auf den Plan ruft. Bei Erfolg wird der Dialog dargestellt. Erst wenn der Benutzer auf OK klickt, werden die im Dialog gesammelten Daten an eine Methode im
COM Objekt übergeben. Die Methode ändert dann die Einstellung.
Man kann es gut mit diesem Programm sehen:
http://technet.microsoft.com/de-de/sysinternals/bb896653(en-us).aspx
Wenn du es als Admin startest, dann kannst du folgendes sehen:
1. Uhrzeitdialog öffnen -> Explorer.exe startet rundll32.exe
2. Adminrechte anfordern für Uhrzeit ändern ->
dllhost.exe wird in wininit.exe/services.exe/svchost.exe (ein Dienst in einem Pool macht die Aufgabe) gestartet
Eigenschaften des Prozesses
Dllhost liegt in C:\Windows\system32\DllHost.exe
gestartet wurde es über
C:\Windows\system32\DllHost.exe /Processid:{9DF523B0-A6C0-4EA9-B5F1-F4565C3AC8B8}
Die
GUID ist die ID des timedate.cpl Systemsteuerungs
COM Moduls. Darin liegt ein
COM Objekt, welches die Uhrzeit ändert. Es stellt aber keine
GUI dar. Die
GUI liegt zwar auch darin, aber eben nicht im
COM.
Wenn du dein Formular in der
COM Methode ausführst, dann wird es innerhalb von DllHost.exe dargestellt. Diese EXE hat aber garkein Theme. Ergo, das Formular auch nicht.
---
Mit dem Zielbutton rechts in der Process Explorer Toolbar, kannst du übrigens überprüfen, welches Fenster zu welchem Prozess gehört.