runas mit dem c-builder ausführen
-
hallo
habe ein kleines problem. ich habe seit einiger zeit nicht wirklich viel programmiert deswegen finde ich irgendwie keinen ansatz bzw einstieg.
folgendes problem:
windows 2000, 1 admin 1 benutzer
es gibt verschiedene programme die admin rechte erfordern. der benutzer soll aber benutzer bleiben.lösung1: mit reg und filemon gucken welche rechte benötigt werden und manuell vergeben
-> viel arbeit und später nicht nachvollziehbar wo welche veränderungen gemacht wurden
lösung2: "ausführen als" hier muss allerdings das admin passwort übergeben werden und das soll eben nicht
lösung3: tools die "ausführen als" mit verschlüsselter pw eingabe ausführen
-> dies tools können oft nur ein prog ausführen sprich für jedes prog müsste man eine spezielle verknüpfung machen die es mit adminrechten aufruft
klingt etwas wirr tut aber so erstmal nichts zur sacheich habe folgendes vor
ein programm im borland builder 5 zu schreiben welches eine liste mit versch. programmen beinhaltet. wird ein prog dieser liste angwählt soll bcb mit oder ohne hilfe des windows-tools runas (zu finden unter %systemroot\system32) das programm aufrufen und das pw übergeben, damit man es mit admin rechten ausführen kann
das das pw im klartext in der exe stehen würde wäre vorerst nicht all zu schlimmich hoffe da man meine fragestellung so einigermaßen verstanden und das jemand nen lösungsansatz für mich hat
gruß daniel
-
ShellExecute !? Siehe auch die FAQ unter "externes Programm starten".
Wenn du ohne runas auskommen willst musst du dich wohl an das WinAPI-Forum wenden, bei Bedarf verschieben wir dich gern dorthin.
-
kewl danke
wie gesagt ewig nix geprogt sicher bald n jahr nich
hm .. mit shell execute is ja schonmal n ansatz ... aber ich kanns ja mal mit winapi versuchen ... wenn du das also verschieben würdest?? kenn mich zwar mit winapi nich wirklich aus aber.. learning by doing..danke schonmal
gruß daniel
-
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.
-
daniel_nap schrieb:
mit shell execute is ja schonmal n ansatz ... aber ich kanns ja mal mit winapi versuchen
rofl
-
audacia schrieb:
daniel_nap schrieb:
mit shell execute is ja schonmal n ansatz ... aber ich kanns ja mal mit winapi versuchen
rofl
ok n bissl kaka ausgedrückt aber mir ist auch klar das winapi kein befehl oder ähnliches ist
-
daniel_nap schrieb:
audacia schrieb:
daniel_nap schrieb:
mit shell execute is ja schonmal n ansatz ... aber ich kanns ja mal mit winapi versuchen
rofl
ok n bissl kaka ausgedrückt aber mir ist auch klar das winapi kein befehl oder ähnliches ist
doppelrofl
ShellExecute ist Bestandteil der WinAPI!
-
anstatt mir ein paar tipps zu geben oder ähnliches sowas.. naja muss ich mich wohl woanders umschaun..
-
daniel_nap schrieb:
anstatt mir ein paar tipps zu geben oder ähnliches sowas..
OKOK
Schau dir mal CreateProcessAsUser an.
Moritz
-
ok danke...
hab mir das soweit durchgelesen ... kann auch prozesse ausführen aber das ist mir alles was hoch..wie gesagt hab nich wirklich viel ahnung davon... trotzdem danke...
-
audacia schrieb:
daniel_nap schrieb:
anstatt mir ein paar tipps zu geben oder ähnliches sowas..
OKOK
Schau dir mal CreateProcessAsUser an.
Moritz
Damnit wird er nicht weitkommen:
Unter NT/2k benötigt man das SE_TCB_NAME Privilege um LogonUser erfolgreich aufrufen zu können. Diese Privilege besitzen allerdings nur Prozesse die in der System-LogonSession laufen - sprich Services. Ein Prozess eines normalen Benutzers bekommt per LogonUser also kein gültiges Token-Handle das er an CreateProcessAsUser übergeben kann. Bei CreateProcessWithLogonW erzeugt der "runas" Dienst das Token.
-
hab da mal was geschrieben, in dem du das pass im klartext weitergibst! Sollte allerdings kein Problem sein da zusätzlich noch ne verschlüsselung mit deinem eigenen Schlüssel hinzuzufügen, bzw du kannst dein pass ja auch gleich eintragen.
//--------------------------------------------------------------------------- #include <vcl.h> #include <iostream> #include <stdio.h> #include <stdlib.h> #include <windows.h> #pragma hdrstop //--------------------------------------------------------------------------- #pragma argsused int main(int argc, char* argv[]) { if(argc<4) { printf("\n\n"); printf("GHCIF.DE - Custom RunAS"); printf("\n\n"); printf("############### Usage ###############\n"); printf("# CrAS.exe <user> <pass> <app> #\n"); printf("# #\n"); printf("# made by peaceohm@ghcif.de #\n"); printf("#####################################\n"); return 0; } else{ STARTUPINFOW si; PROCESS_INFORMATION pi; memset(&si, 0, sizeof(si)); memset(&pi, 0, sizeof(pi)); if(!CreateProcessWithLogonW(WideString(argv[1]), WideString("."), WideString(argv[2]),LOGON_WITH_PROFILE, NULL, WideString(argv[3]), NULL, NULL, NULL, &si, &pi)) printf("\nUser/Pass/Anwendungsangaben fehlerhaft!\n"); CloseHandle(pi.hProcess); CloseHandle(pi.hThread); return 0; } } //---------------------------------------------------------------------------
Mfg
peaceohm