EXE einmal Konfigurieren und dann nie wieder...
-
- Beiträge: 321
- Registriert: 15.06.2008 21:52
EXE einmal Konfigurieren und dann nie wieder...
Hallo,
hab folgendes Problem:
Ich will mit PB eine EXE erstellen die man beim ersten Start konfiguriert, die dann die Einstellungen für IMMER in der EXE aufbewahrt. Ohne Recourcen ohne EXTERNE Programm so das jeder sie individuell Konfigurieren kann!
Geht so etwas?
Gruß
JENS
PS: Zu nut kann man bei der Konfirguration auch Recourcen gebrauchen aber danach nie wieder...
hab folgendes Problem:
Ich will mit PB eine EXE erstellen die man beim ersten Start konfiguriert, die dann die Einstellungen für IMMER in der EXE aufbewahrt. Ohne Recourcen ohne EXTERNE Programm so das jeder sie individuell Konfigurieren kann!
Geht so etwas?
Gruß
JENS
PS: Zu nut kann man bei der Konfirguration auch Recourcen gebrauchen aber danach nie wieder...
Registry ist für kleinere Programme absolut verboten!
Am Besten also die Einstellungen im AppPath abspeichern.
Am Besten also die Einstellungen im AppPath abspeichern.
"Menschenskinder, das Niveau dieses Forums singt schon wieder!" — GronkhLP ||| "ich hogffe ihr könnt den fehle endecken" — Marvin133 ||| "Ideoten gibts ..." — computerfreak ||| "Jup, danke. Gruss" — funkheld
ich schreibe ja auch ungern in die Registry, aber sorry, diese Aussage istc4s hat geschrieben:Registry ist für kleinere Programme absolut verboten!
ziemlich unsinnig. Wer sollte das verboten haben? Und dürfen Deiner Logik
folgend dann nur 'größere' Programme in die Registry schreiben? Und
warum dürfen kleine Programme es nicht und größere Programme schon?
auch hier: Einspruch! Einstellungen gehören korrekterweise in denc4s hat geschrieben:Am Besten also die Einstellungen im AppPath abspeichern.
Anwendungsdaten-Ordner des jeweiligen Benutzers.
Grüße ... Kiffi
a²+b²=mc²
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
- mardanny71
- Beiträge: 266
- Registriert: 05.03.2005 01:15
- Wohnort: Thüringen
Du meinst es wohl umgekehrt.
Für jeden konfigurierbaren Wert kannst Du zunächst einen Defaultwert in der *.exe definieren.
Nach der Konfiguration schreibt die Exe eben eine Einstellungsdatei.
Diese wird im Pfad des jeweiligen Nutzers abgelegt und überschreibt die Defaultwerte.
Oder was willst Du sonst?
gruß
mardanny71
Für jeden konfigurierbaren Wert kannst Du zunächst einen Defaultwert in der *.exe definieren.
Nach der Konfiguration schreibt die Exe eben eine Einstellungsdatei.
Diese wird im Pfad des jeweiligen Nutzers abgelegt und überschreibt die Defaultwerte.
Oder was willst Du sonst?
gruß
mardanny71
Gruß, mardanny71
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
Windows 7 - openSUSE 12.1 - KDE 4.7 - PB4.6 beta 4
da gabs mal was im CodeArchiv, gibs wohl nicht mehr ... naja ist ja auch
schon uralt ... also so nicht lauffähig:
In wie weit man dafür Rechte braucht in den entsprechenden
Betriebssystemen kann ich nicht sagen.
MFG PMV
schon uralt ... also so nicht lauffähig:
Code: Alles auswählen
; www.purearea.net (Sourcecode collection by cnesm)
; Author: Mischa
; Date: 22. November 2003
Procedure.s MainPart(Text.s)
;Simple text-Box
OpenWindow(0, 0, 0, 240, 160, #PB_Window_SystemMenu | #PB_Window_ScreenCentered, "Notes")
CreateGadgetList(WindowID())
StringGadget(0, 5, 5, 230, 150, Text, #ES_MULTILINE | #WS_VSCROLL | #WS_HSCROLL | #ES_AUTOHSCROLL | #ES_AUTOVSCROLL)
Repeat
Until WaitWindowEvent() = #PB_EventCloseWindow
ProcedureReturn GetGadgetText(0)
EndProcedure
;Get program and temp-folder name
program.s = Space(1000)
GetModuleFileName_(0, program, 1000)
temp.s = Space(1000)
GetTempPath_(1000, temp)
;Construct Clone-Name
clone.s = temp + "_" + GetFilePart(program)
;Check mode by parameter
mode.s = ProgramParameter()
If mode = "clone" ;I am the clone
;Check if another instance is running (cause makes no sense here)
Mutex = CreateMutex_(0, 1, "Mischas Notes")
Error = GetLastError_()
If Mutex < >0 And Error = 0
program = ProgramParameter()
Size = FileSize(program)
ReadFile(0, program)
FileSeek(Size - 12)
If ReadLong() = 1234321 ;this is a sign for us that there are resources inside
Size = ReadLong()
resourcesize = ReadLong()
FileSeek(Size)
*res = AllocateMemory(resourcesize)
ReadData(*res, resourcesize)
resource.s = PeekS(*res)
EndIf
FileSeek(0)
*header = AllocateMemory(Size)
ReadData(*header, Size) ;Put the small main-program in the pocket (alternate do this in the end)
CloseFile(0)
newtext.s = MainPart(resource) ;The main-program
If newtext < >resource ;Ok, now we construct new program with new resources
resourcesize = Len(newtext) + 1
*res = AllocateMemory(resourcesize)
PokeS(*res, newtext)
SetFileAttributes_(program, #FILE_ATTRIBUTE_NORMAL) ;maybe its write-protected
CreateFile(1, program)
WriteData(*header, Size) ;program-part
WriteData(*res, resourcesize) ;resource-part
WriteLong(1234321) ;Our sign
WriteLong(Size) ;Adress of resources
WriteLong(resourcesize) ;Size of resources
CloseFile(1)
EndIf
RunProgram(program, "killclone", "", 0)
EndIf
CloseHandle_(Mutex)
ElseIf mode = "killclone" ;Delete clone of program
Sleep_(500)
DeleteFile(clone)
Else ;normal mode
;Create and start clone
If FileSize(clone) = - 1
CopyFile(program, clone)
EndIf
RunProgram(clone, "clone " + Chr(34)+program + Chr(34), "", 0)
EndIf
End
Betriebssystemen kann ich nicht sagen.
MFG PMV
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
>> Nach der Konfiguration schreibt die Exe eben eine Einstellungsdatei.
> Er möchte ja irgendwie keine Einstellungsdatei.
aber gerade das ist ja der knackpunkt.
irgendwo hin müssen die einstellungen ja rückgeschrieben werden,
und aufs eigene verzeichnis gibt es inzwischen keine berechtigung mehr,
und auf die eigene exe schon lange nicht.
man kann die benögtigte info so kurz wie möglich halten,
also wenn jede einstellungsmöglichkeit vier zustände hat,
kann man in einem Long sechzehn Eigenschaften fläggen,
also je nachdem würde ein einziges Feld in der Registry genügen...
aber irgendwo wo es erlaubt ist muss man es speichern.
wobei ich mich allerdings frage, was dagegen spricht ein winziges binary file in User\Appdata\ abzulegen...
> Er möchte ja irgendwie keine Einstellungsdatei.
aber gerade das ist ja der knackpunkt.
irgendwo hin müssen die einstellungen ja rückgeschrieben werden,
und aufs eigene verzeichnis gibt es inzwischen keine berechtigung mehr,
und auf die eigene exe schon lange nicht.
man kann die benögtigte info so kurz wie möglich halten,
also wenn jede einstellungsmöglichkeit vier zustände hat,
kann man in einem Long sechzehn Eigenschaften fläggen,
also je nachdem würde ein einziges Feld in der Registry genügen...
aber irgendwo wo es erlaubt ist muss man es speichern.
wobei ich mich allerdings frage, was dagegen spricht ein winziges binary file in User\Appdata\ abzulegen...
>wobei ich mich allerdings frage, was dagegen spricht ein winziges binary file in User\Appdata\ abzulegen...
Eben. Vielleicht braucht er ein Super-Leise-Programm, das der Anwender
nicht bemerken soll
.
> aber irgendwo wo es erlaubt ist muss man es speichern.
Hier wirklich entweder die Reg oder AppData.
Eben. Vielleicht braucht er ein Super-Leise-Programm, das der Anwender
nicht bemerken soll

> aber irgendwo wo es erlaubt ist muss man es speichern.
Hier wirklich entweder die Reg oder AppData.
Win11 x64 | PB 6.20