Benutzer abmelden || Windows XP
-
Hallo zusammen!
Ich habe folgendes Problem:
Bei Softwareupdates eines bestimmten Programmes werden immer wieder dieselben registry werte verändert, die die Funktionalität des Druckers beeinflussen. Jetzt habe ich mir folgende Lösung überlegt, die den Support einfacher gestaltet. Ich lege einen neuen Benutzer an, der die rechte hat Registry Einträge zu ändern. Jetzt habe ich 2 Möglichkeiten weiter zu verfahren:1.)
Gibt es vllt eine Art runas Befehl/WinApi Funktion bei dem man das Benutzerpasswort mit übergeben kann?
In diesem Fall könnte das Programm von jedem X-beliebigen Benutzer gestartet werden2.)
Kann ich mit einem Befehl/WinApi Funktion den aktuellen Benutzer wieder ausloggen?
Dies wäre meine Alternativlösung, dass sich die Endbenutzer nach jedem Softwareupdate mit diesem Benutzer einloggen, der anschließend die Registrywerte ändert, und sich dann sofort automatisch wieder abmeldet.Allerdings habe ich noch das Problem, dass sich der Schlüssel, den ich ändern möchte ein einer externen Registrydatei befindet, um genau zu sein auf einer Windows XP embedded auf einer anderen Festplatte. Gibt es auch eine Api Funktion um die externe Registrydatei des XP embedded in die aktuelle Registry des laufenden XPs zu laden?
Danke schonmal im Voraus!
PS:Hört sich alles etwas kompliziert an, ich weiß....
-
Hallo,
Wie wärs wenn du das im WinAPI-Forum fragst?
-
hmm, haste eigentlich recht...
soll ich nochmal neu posten, oder auf verschiebung warten?
irgendwie alte gewohnheit, hier reinzuposten...
-
peaceohm schrieb:
irgendwie alte gewohnheit, hier reinzuposten...

Wie jetzt, bei 7 (!) Beiträgen?
-
Du willst nich wissen, das er schon zich mal unreg gepostet hat? ;p
Hm.. gibt doch die WInApi Funktion RunAs oder so.. vielleicht mal damit probieren
-
Dieser Thread wurde von Moderator/in Jansen aus dem Forum Borland C++ Builder (VCL/CLX) in das Forum WinAPI verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Es gibt eine wunderschöne Funktion
BOOL CreateProcessAsUser( HANDLE hToken, LPCTSTR lpApplicationName, LPTSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCTSTR lpCurrentDirectory, LPSTARTUPINFO lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation );Die sieht auf den ersten Blick erstmal fies aus, aber im Normalfall kannst du für eine Reihe der Paramater einfach NULL übergeben.
Beispiel:
PROCESS_INFORMATION pi; DWORD error; STARTUPINFO si; si.cb = sizeof(STARTUPINFO); si.lpReserved = NULL; si.lpTitle = NULL; si.lpDesktop = NULL; //"WinSta0\\Default"; - ein möglicher Wert si.dwX = si.dwY = 0; si.dwXSize = 0L; // Fenstergröße si.dwYSize = 0L; // ---- || ---- si.dwFlags = 0; si.wShowWindow = SW_SHOWNORMAL; si.lpReserved2 = NULL; si.cbReserved2 = 0; if( !CreateProcessAsUser( NULL, "hackreg.exe <args>", NULL, NULL, NULL, false, 0, NULL, &si, &pi ) ) error = GetLastError();Ausführliche und vielleicht einleuchtendere Erklärungen gibt's in der MSDN. Schau's dir mal an, ist ziemlich spannend.
Gruß, oli
-
Dagfür brauch er aber Priviliegien, die ers als Benutzer nicht bekommen wird, die nur von Prozessen auf dem Systemkonto aktiviert werden können. Ab Windows 2000 gibt es aber CreateProcessWithLogonW, welches diese Privilegien nicht benötigt.
-
Wie wäre es, wenn du das ganze als Dienst realisierst?