-
Forum: Win32/Win64 API (native code)
by amigage,
7. Jan 2012
Doch, Du hast alles richtig verstanden.
Genauso sieht es aus :)
ich danke Dir auch für die ausführliche Erläuterung zur Problemlösung, die ich bei Gelegenheit einmal ausprobieren werde. Wie gesagt, derzeit habe ich eine andere Lösung gefunden. Die Lösung mit runas als separates Programm kam mir auch in den Sinn.
-
Forum: Win32/Win64 API (native code)
by amigage,
5. Jan 2012
Wenn ein Benutzer ein Programm unter anderen Konto startet, dann ist das für das gestartete Programm so, als ob der Nutzer mit dem andren Konto es gestartet hätte.
Das wollte ich doch nur wissen :) Ich dachte, es gäbe eine Möglichkeit, dies auszulesen. So in der Art: das Adminkonto wurde von einem eingeschränkten Benutzerkonto, wie hieß das?
Dem ist also nicht so! Somit steht also fest,...
-
Forum: Win32/Win64 API (native code)
by amigage,
5. Jan 2012
Hallo Luckie,
auch Dir ein erfolgreiches 2012!
Ich danke Dir für den Hinweis und die superschnelle Umsetzung eines Beispiel-Codes. Ich habe es jetzt auch noch nicht getestet. Nur wie ich die Sache sehe, benötige ich doch wieder den Benutzernamen des eingeschränkten Nutzers. Den weiß das Programm doch aber nicht, wenn es sofort als Admin gestartet wird.
Besser wäre es doch, wenn ich den...
-
Forum: Win32/Win64 API (native code)
by amigage,
5. Jan 2012
Hallo,
Dir auch ein frohes neues Jahr.
Das wäre kein Problem, wenn der Nutzer die Software nicht schon von selbst als Admin startet bzw. es direkt in den Eigenschaften der exe fest hinterlegt.
Ich habe zwar für mein Problem eine andere Lösung gefunden, so dass ich nicht mehr in den Admin-Modus muss, aber interessieren würde es mich schon, wie man das hinbekommt, ohne vorher Daten...
-
Forum: Win32/Win64 API (native code)
by amigage,
3. Jan 2012
Hallo,
leider habe ich bisher keine Lösung für mein Problem finden können.
Den Zugriff auf die Registry kann man ja wirklich noch umgehen, indem man "unprofessioneller Weise" den eingeschränkten Nutzernamen abspeichert und dann als Admin ausliest. Somit erhält man den richtigen SID für den HKEY_USERS Registryzweig.
Problematischer ist es da schon, wenn man auf Standardpfade zugreifen...
-
Forum: Win32/Win64 API (native code)
by amigage,
19. Dez 2011
@Bummi: der Dienst meldet sich als Netzerkdienst an und ich habe den Dienst nicht in der Source.
@blackfin: Dachte ich mir auch schon, aber der Anwender kann ja theoretisch das Programm gleich als Admin ausführen. Da kann ich den Benutzernamen leider nicht zwischenspeichern.
@himitsu: Bleibt nur die Frage: wie?
-
Forum: Win32/Win64 API (native code)
by amigage,
19. Dez 2011
Vielleicht erkläre ich es ein wenig besser.
Das Programm muss einen Windows Dienst stoppen. Dies kann es nur mit Adminrechten. Dann muss die Software Daten aus der Registry des Nutzers lesen, um auf bestimmte Dateien zugreifen und austauschen zu können. Diese Information findet sich nur in der Registry des angemeldeten Nutzers, also dem, der die Software von Hand gestartet hat. Dann soll der...
-
Forum: Win32/Win64 API (native code)
by amigage,
19. Dez 2011
Hallo Luckie,
Ich meine den Benutzer, der in dem Moment verwendet wird. Meine Software braucht aber wegen einer anderen Funktion Adminrechte, muss aber dann auch auf die Registry des momentan sichtbar geöffneten Nutzers zugreifen. Mit RegOpenCurrentUser bekomme ich ja dann nur die Registrywerte eines temporären Nutzers.
Ich habe halt versucht, mit GetUserName den Benutzernamen...
-
Forum: Win32/Win64 API (native code)
by amigage,
18. Dez 2011
Ich habe noch ein wenig im Netz recherchiert und bin auf die Mtx Unit gestoßen (MS Transaction Server Interface Unit).
Hier gibt es unter ISecurityProperty die Funktion GetDirectCallerSID() mit der ich - soweit wie ich das verstanden habe - die SID des originalen Prozesses auslesen kann.
Die Hilfe von Delphi ist nicht weiter aussagekräftig und hilft mir leider auch nicht weiter.
Im Netz...
-
Forum: Win32/Win64 API (native code)
by amigage,
16. Dez 2011
Hallo Luckie,
okay, ich habe es jetzt mit Deiner Funktion GetAccountSid versucht. Problem ist nur, ich brauche hier den Benutzernamen.
Aber meine Funktion gibt mir immer nur den aktuellen Windows-Nutzernamen. In dem Fall den Admin-Nutzernamen.
function GetCurrentUserName: string;
const
cnMaxUserNameLen = 254;
var
-
Forum: Win32/Win64 API (native code)
by amigage,
16. Dez 2011
Mist, leider zu früh gefreut! Da mein Beispielprogramm bei meinem letzten Test nicht die Werte des Admin angezeigt hat, war ich der Meinung, jetzt greift er richtig zu.
Falsch gedacht: denn nachdem ich jetzt nach real existierenden Registryeinträgen des eingeschränkten Nutzers mit Adminrechten gesucht habe, erhalte ich nicht die Werte. Der Grund: Windows legt einen temporären Nutzer an...
-
Forum: Win32/Win64 API (native code)
by amigage,
16. Dez 2011
Hat sich erledigt. Es funktioniert!
Es lag daran, dass ich den Admin und den eingeschränkten Nutzer gleichzeitig offen hatte. Jetzt, nachdem ich neu gebootet habe und nur den eingeschränkten Nutzer geöffnet habe, arbeitet die Software so, wie sie soll.
-
Forum: Win32/Win64 API (native code)
by amigage,
15. Dez 2011
Vielen lieben Dank Euch beiden, für die schnelle Reaktion.
Genauso siehts aus. Ich habe durch den Hinweis auf RegOpenCurrentUser mal meine Funktion versucht umzubasteln, aber irgendwie bekomme ich bei User1 und runas Admin immer noch die Werte des Admin. Wo liegt bei mir der Fehler?
function ReadRegistryValue(MyHKey : Byte; RegKey : String; RegValue : String) : String; overload;
var
...
-
Forum: Win32/Win64 API (native code)
by amigage,
15. Dez 2011
Hallo liebe Delphi-Gemeinde,
ich habe das Problem, dass ich einen SQL-Dienst stoppen und dann wieder starten möchte.
Dies ist soweit kein Problem.
Problematisch wird es, wenn ich ein eingeschränkter Nutzer bin, die demzufolge Software als Nutzer mit Adminrechten starten muss. Denn dann kann ich zwar auch den Dienst starten und stoppen. Wenn mein Programm aber gleichzeitig die Registry...