Programm als Benutzer nicht-Administrator starten?
Programm als Benutzer nicht-Administrator starten?
Hallo Leute,
mein Programm bekommt ein hübsches Setup, welches am Ende eine Option anbietet um das Programm zu starten.
Das Setup läuft natürlich mit Administratorrechten, aber das Programm sollte nur mit Standardrechten starten.
Hat jemand so was schon probiert?
mein Programm bekommt ein hübsches Setup, welches am Ende eine Option anbietet um das Programm zu starten.
Das Setup läuft natürlich mit Administratorrechten, aber das Programm sollte nur mit Standardrechten starten.
Hat jemand so was schon probiert?
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
- Thorsten1867
- Beiträge: 1360
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: AW: Programm als Benutzer nicht-Administrator starten?
Wenn du dir die Arbeit für das Setup sparen willst, kannst du gerne auch mein EasySetup nutzen. 

Re: Programm als Benutzer nicht-Administrator starten?
Ist zwar genau das umgekehrte, aber schau mal hier. Vielleicht hilft es dir weiter._JON_ hat geschrieben:Das Setup läuft natürlich mit Administratorrechten, aber das Programm sollte nur mit Standardrechten starten.
@Thorsten1867:
Dein Link funktioniert nicht.
Re: Programm als Benutzer nicht-Administrator starten?
@Thorsten
EasySetup sieht gut aus, vielleicht spar ich mir ein eigenes Setup-programm zu erstellen.
Habe nun schon eine Lösung gefunden:
EasySetup sieht gut aus, vielleicht spar ich mir ein eigenes Setup-programm zu erstellen.
Habe nun schon eine Lösung gefunden:
Code: Alles auswählen
Import "advapi32.lib"
CompilerIf #PB_Compiler_Processor = #PB_Processor_x86
CreateProcessWithToken_(hToken.i, dwLogonFlags.l, lpApplicationName.i, lpCommandLine.i, dwCreationFlags.l, lpEnvironment.i, lpCurrentDirectory.i, lpStartupInfo.i, lpProcessInfo.i) As "_CreateProcessWithTokenW@36"
CompilerElse
CreateProcessWithToken_(hToken.i, dwLogonFlags.l, lpApplicationName.i, lpCommandLine.i, dwCreationFlags.l, lpEnvironment.i, lpCurrentDirectory.i, lpStartupInfo.i, lpProcessInfo.i) As "CreateProcessWithTokenW"
CompilerEndIf
EndImport
Procedure RunWithPidToken(lPid.l, sPath.s, sParameter.s = "", sWorkingDir.s = "")
Protected StartupInfo.StartupInfo
StartupInfo\cb = SizeOf(StartupInfo)
StartupInfo\dwFlags = #STARTF_USESHOWWINDOW
StartupInfo\wShowWindow = #SW_NORMAL
Protected sPara.s, sWork.s
If sParameter <> ""
sPara = sParameter
EndIf
If sWorkingDir <> ""
sWork = sWorkingDir
EndIf
Protected PROCESS_INFORMATION.PROCESS_INFORMATION
Protected hProcess = OpenProcess_(#PROCESS_QUERY_INFORMATION, 0, lPid), hToken, hnewToken
If hProcess
OpenProcessToken_(hProcess, #TOKEN_DUPLICATE, @hToken)
DuplicateTokenEx_(hToken, #TOKEN_ALL_ACCESS, 0, 2, 1, @hnewToken)
CreateProcessWithToken_(hnewToken, 0, @sPath, @sPara, 0, 0, @sWork, StartupInfo, PROCESS_INFORMATION)
CloseHandle_(hnewToken)
CloseHandle_(hToken)
CloseHandle_(hProcess)
EndIf
EndProcedure
Procedure GetPID(ProcessName.s)
hSnapShot = CreateToolhelp32Snapshot_(#TH32CS_SNAPPROCESS,#Null)
If hSnapShot
iResult = -1
pInfo.PROCESSENTRY32
pInfo\dwsize = SizeOf(PROCESSENTRY32)
bProcAvailable = Process32First_(hSnapShot, @pInfo)
While(bProcAvailable) And (Not iResult = 0)
bProcAvailable = Process32Next_(hSnapShot, @pInfo)
iResult = CompareMemoryString(@pInfo\szExeFile,@ProcessName,1)
Wend
CloseHandle_(hSnapShot)
ProcedureReturn pInfo\th32ProcessID
EndIf
EndProcedure
RunWithPidToken(GetPID("explorer.exe"), "cmd.exe", "", "")
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Programm als Benutzer nicht-Administrator starten?
Der einfache und meist übliche Weg ist:
Ein Programm mit Userrechten starten, dies entpackt nur die Dateien (meist nach temp), überprüft den freien Platz usw.
Danach das eigentlich Setup mit "runas" starten und warten, bis dies beendet ist, dann die installierte
Applikation starten.
Ansonsten: Ein eigenes Setup-Programm selber zu schreiben ist schwachfug! Bis man da alles richtig macht,
vergehen Wochen/Monate. Dann lieber eins der vielen schon verfügbaren Setupprogramme nutzen, die schon länger
getested wurden. Es ist jedenfalls eine Menge an Hintergrundwissen und Erfahrung nötig, um selbst das
einfachste Setup in vernünftiger Form selber zu erstellen. Solange man kein Setup-Programm an sich erstellen
möchte, sondern nur für einmalige Nutzung im eigenem Programm, sollte man das Rad nicht neu erfinden, zu
mal die Gefahr gross ist, das dieses neue Rad erstmal eiert
Ein Programm mit Userrechten starten, dies entpackt nur die Dateien (meist nach temp), überprüft den freien Platz usw.
Danach das eigentlich Setup mit "runas" starten und warten, bis dies beendet ist, dann die installierte
Applikation starten.
Ansonsten: Ein eigenes Setup-Programm selber zu schreiben ist schwachfug! Bis man da alles richtig macht,
vergehen Wochen/Monate. Dann lieber eins der vielen schon verfügbaren Setupprogramme nutzen, die schon länger
getested wurden. Es ist jedenfalls eine Menge an Hintergrundwissen und Erfahrung nötig, um selbst das
einfachste Setup in vernünftiger Form selber zu erstellen. Solange man kein Setup-Programm an sich erstellen
möchte, sondern nur für einmalige Nutzung im eigenem Programm, sollte man das Rad nicht neu erfinden, zu
mal die Gefahr gross ist, das dieses neue Rad erstmal eiert

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Programm als Benutzer nicht-Administrator starten?
Hmm, an so was einfaches habe ich gar nicht gedacht.ts-soft hat geschrieben:Der einfache und meist übliche Weg ist:
Ein Programm mit Userrechten starten, dies entpackt nur die Dateien (meist nach temp), überprüft den freien Platz usw.
Danach das eigentlich Setup mit "runas" starten und warten, bis dies beendet ist, dann die installierte
Applikation starten.
Nu gut mein Code ist trotzdem noch nützlich, z.B. um eine Webbrowser aus einem elevated Prozess zu starten.
PureBasic 5.46 LTS (Windows x86/x64) | windows 10 x64 Oktober failure
- ts-soft
- Beiträge: 22292
- Registriert: 08.09.2004 00:57
- Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel - Wohnort: Berlin
Re: Programm als Benutzer nicht-Administrator starten?
Naja, das Alter macht weise_JON_ hat geschrieben:Hmm, an so was einfaches habe ich gar nicht gedacht.

Bin früher auch meist über ROM von Berlin nach Hamburg gefahren

PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.

Re: Programm als Benutzer nicht-Administrator starten?
Kann EasySetup als Ersatz für eine Autostart-Verknüpfung oder dem Eintrag im Run-Schlüssel der Registry
eine Aufgabe bei Benutzeranmeldung anlegen?
Ich habe nämlich bemerkt, dass unter Windows8 die alten Startmöglichkeiten mit einer spürbaren Verzögerung
im Vergleich mit einer Startaufgabe durchgeführt werden.
eine Aufgabe bei Benutzeranmeldung anlegen?
Ich habe nämlich bemerkt, dass unter Windows8 die alten Startmöglichkeiten mit einer spürbaren Verzögerung
im Vergleich mit einer Startaufgabe durchgeführt werden.
- Thorsten1867
- Beiträge: 1360
- Registriert: 04.02.2005 15:40
- Computerausstattung: [Windows 10 x64] [PB V5.7x]
- Wohnort: Kaufbeuren
- Kontaktdaten:
Re: AW: Programm als Benutzer nicht-Administrator starten?
Alles, was "Easy" übersteigt' findet man bei EasySetup bei den benutzerdefinierten Aufgaben.
Es ist also auch möglich Registry-Einträge oder Verknüpfungen im Autostart-Ordner zu erstellen.
ts-soft hat recht, ein Setup-Programmen zu schreiben, ist ein Projekt von vielen Monaten. Hätte ich das damals schon gewusst, was damit auf mich zukommt, hätte ich es mir vielleicht nochmal überlegt.
(Ja, damals war ich halt noch jung und naiv und mich hat niemand gewarnt
)
Es ist also auch möglich Registry-Einträge oder Verknüpfungen im Autostart-Ordner zu erstellen.
ts-soft hat recht, ein Setup-Programmen zu schreiben, ist ein Projekt von vielen Monaten. Hätte ich das damals schon gewusst, was damit auf mich zukommt, hätte ich es mir vielleicht nochmal überlegt.

