![]() |
Verzeichnisrechte unter Vista
Hi,
ich hab mit D2007 eine Applikation entwickelt, welche beim Updates und Lizenzabfragen im Programmverzeichnis div. Dateien erzeugt. Klappt bei XP seit Jahren hervorragen. Nur bei Vista ist das nicht möglich. Hat da jemand einen Vorschlag? Gruss EL |
Re: Verzeichnisrechte unter Vista
Glaskugel auspack:
Du hast die Anwendung unter C:\Programme installiert und erwartest das der User Schreibrechte in deinem Installationspfad hat. Das kann auch schon seit NT-Zeiten fehlschlagen wenn der User keine entsprechenden Rechte hat. |
Re: Verzeichnisrechte unter Vista
C:\Programme gibts unter Vista nichtmehr da heisst das alles dann C:\Program Files und wird nur als C:\programme angezeigt.
Das ist noch mit einigen anderen Ordnern so :wall: |
Re: Verzeichnisrechte unter Vista
Zitat:
|
Re: Verzeichnisrechte unter Vista
Zitat:
Gruss EL |
Re: Verzeichnisrechte unter Vista
Dann liegts vielleicht an den Adminrechten? Es ist ein Unterschied ob die als Admin angemeldet bist oder ein programm mit Adminrechten ausgeführt wird, das musst du extra machen
|
Re: Verzeichnisrechte unter Vista
Zitat:
Gruss EL |
Re: Verzeichnisrechte unter Vista
Zitat:
Gruss EL |
Re: Verzeichnisrechte unter Vista
wie gesagt.. es ist egal ob der USER die Adminrechte hat oder nicht. Versuche mal die Anwendung mit rechtsklicke-> Als Admin ausführen zu starten
|
Re: Verzeichnisrechte unter Vista
Zitat:
|
Re: Verzeichnisrechte unter Vista
Zitat:
|
Re: Verzeichnisrechte unter Vista
Zitat:
|
Re: Verzeichnisrechte unter Vista
Zitat:
|
Re: Verzeichnisrechte unter Vista
Egal welche Rechte da sind, Vista läßt es an sich nicht mehr zu, daß im Programme-Verzeichnis Dateien geschrieben werden
Zitat:
Grüße, Messie |
Re: Verzeichnisrechte unter Vista
Zitat:
|
Re: Verzeichnisrechte unter Vista
Zitat:
|
Re: Verzeichnisrechte unter Vista
Andersrum gefragt:
Wie kann ich es bewerkstelligen, das für eine tägliches Zinsupdate keine Adminrechte vorhanden sein müssen? Die Software MUSS und unter XP und Vista laufen. Außerdem werden von diesem Programm angelegte Akten (xml-Dateien) normalerweise Daten in ..\programmverzeichnis\data geschrieben. Was ist zu tun? Gruss EL |
Re: Verzeichnisrechte unter Vista
Verändere die zugriffrechte auf das data-Verzeichnis
|
Re: Verzeichnisrechte unter Vista
Hallo,
Zugriffsrecht ändern bringt unter Vista nichts, die Daten müssen unter AppData (siehe oben). Unter c:\programme dürfen einfach keine aktualisierbaren Daten mehr rein. Heiko |
Re: Verzeichnisrechte unter Vista
Wenn das ein Software von ihm ist steht natürlich außer Frage, das der gewählte Platz völlig falsch. Ich habe ihn falsch verstanden und dachte es handle sich ume eine Fremdsoftware.
|
Re: Verzeichnisrechte unter Vista
Zitat:
Gruss EL |
Re: Verzeichnisrechte unter Vista
Installier es halt einfach nicht nach c:\Programme.
|
Re: Verzeichnisrechte unter Vista
Zitat:
Das funktioniert unter XP aber auch. Der Speicherort heißt zwar anders, wird aber durch dieselbe API-Funktion bestimmt. ![]() Grüße, Messie |
Re: Verzeichnisrechte unter Vista
Halo,
MS empfiehlt für Updates MSI-Patch-Dateien oder einen Update-Dienst. Heiko |
Re: Verzeichnisrechte unter Vista
Zitat:
|
Re: Verzeichnisrechte unter Vista
Kann denn der Update dienst oder die MSI Update dateien ohne Administrator rechte installiert werden ? Ich denk doch nicht.
Ich finds auch gut so Max Mustermann der nichtmal sein Radio bedienen kann sollte auch nicht wild im Programmverzeichnis rumpfuschen können. Wenn jemand Updates machen können soll kann man ihm Hauptbenutzer Rechte verpassen. Viele Hersteller stellen auch instabile Software in die Updates... |
Re: Verzeichnisrechte unter Vista
Ich möchte in dem Zusammenhang auch auf die schönen Vista-Videos unserer DP verweisen. Vorallem Teil zwei unter
![]() Wenn ich das ganze richtig verstanden habe (habs nicht nicht selbst ausprobiert) hat es Bernhard Geyer bereits recht gut getroffen. Je nachdem, was deine Update-Anwendung genau macht (komplett updaten oder nur Dateien ersetzen) musst du sie komplett oder teilweise mit Admin Rechten ausstatten. Das geht über das erwähnte erweiterte Manifest. Der User bekommt dann allerdings eine hässliche Warnung beim Start. Wenn du das Programm dann noch selbst zertifizierst (kostenlos), ist die Meldung nur noch unschön. Und mit einem kostenpflichtigen Zertifikat kann man dann sogar damit angeben ... :wink: Ist übrigens alles in dem Video erklärt! |
Re: Verzeichnisrechte unter Vista
Zitat:
Gruss EL |
Re: Verzeichnisrechte unter Vista
Hallo,
> Du mußt deiner Update-Exe ein erweitertes Manifest geben in der steht das die Exe Admin-Rechte > benötigt. Dann kommt dieser "geliebte" Elevation-Dialog das die gestartete Anwendung Admin-Rechte > benötigt. Und wenn nun der User OK drückt ist alles wieder gut. Du solltest dir aber auch auch > (kostenpflichtiges) Zertifikat besorgen das dieser Dialog auch in einer halbwegs schönen Farbe kommt. Was heisst hier gut ? Wenn der User das Admin-Kennwort nicht kennt, klappt das Update ja nicht. Vorausgesetzt der User ist kein Admin. Ist schon klar, dass es genauso sein soll. Er könnte ja auch die Exe (über den Explorer) löschen wollen. Ich habe hier Kunden mit > 20 Rechner, wo unser Porgramm läuft. Bisher erfolgt das Update durch einfaches Kopieren in ein Update-Verzeichnis auf den Server. Der User hat Schreibrecht im Programm-Verzeichnis (nicht komplett, nur bei uns). Beim Start wird auf dem Server nach dem Update gesucht, es reinkopiert und die neue Exe gestartet. Unter Vista muss jetzt der Admin zu jedem Rechner rennen, und das Update (+Admin-Manifest) aufrufen. Ich denke, ich mache das mit dem Update-Dienst. Heiko |
Re: Verzeichnisrechte unter Vista
Hallo,
die Zinsdaten gehören in das App-Verzeichnis, nicht unter Programme. Heiko |
Re: Verzeichnisrechte unter Vista
hoika hats erfasst. Alle Anwendungsdaten gehören in das "Anwendungsdaten"-Verzeichnis des Systems/Benutzers.
Das EINZIGE was unter Programme liegen sollte, sind statische Daten (Ressourcen etc.) und die Anwendungen. Sich ändernde Dinge wie Zinsdaten sollten grundsätzlich unter
Delphi-Quellcode:
gespeichert werden!
var
path: array[0..MAX_PATH] of char; begin SHGetFolderPath( 0, CSIDL_APPDATA, 1, 0, @path[0]); SHGetFolderPath( 0, CSIDL_LOCAL_APPDATA, 1, 0, @path[0]); SHGetFolderPath( 0, CSIDL_COMMON_APPDATA, 1, 0, @path[0]); end; // Code ungetestet! Was das Update angeht: Normale Nutzer haben keinerlei Schreibrechte unter Programme, nur Admins dürfen das. PUNKT. Ich bin mir nicht mal sicher, ob unter Vista überhaupt Standardnutzer die Schreibrechte dafür bekommen könnten ... Entweder du nutzt den Update-Dienst oder du drehst den Spieß um: Nicht die Clients holen sich das Update vom Server (Intranet?), sondern der Server startet ein Tool mit Adminrechten, dass die neuen Daten an die Clients verteilt - sofern das bei euch gehen würde. edit: Delphi-Code korrigiert |
Re: Verzeichnisrechte unter Vista
Zitat:
Gruss EL |
Re: Verzeichnisrechte unter Vista
Hi,
könnte man diese Berechnungen nicht in Module (Plugins, BPLs) auslagern und diese in den genannten Verzeichnissen ablegen? mfG mirage228 |
Re: Verzeichnisrechte unter Vista
Zitat:
Ich frage mich ohnehin, wie ich dll´s ersetzen soll, wenn sich mal wieder eine zugekaufte Lib ändert... Gruss EL |
Re: Verzeichnisrechte unter Vista
Zitat:
Bei 5000 Usern könnte es sich aber lohnen, das über scriptgesteuerte MSI-Updates zu bewerkstelligen. Grüße, Messie |
Re: Verzeichnisrechte unter Vista
Zitat:
Im Moment speichere ich die Zins- und LizenzUpdates(verschlüsselt) in %program_path%\meineFirma. Die vom Programm erzeugten Hypothekendateien (xml) in %program_path%\meineFirma\Daten. Was schlagt Ihr vor, wo ich die Daten nun hinpacken soll? Ich möchte die Anwendung nicht für Vista UND XP getrennt pflegen müssen, sondern eine Anwendung, welche auf beiden Systemen läuft. Obenauf speichere ich einige Dinge in der Registry unter HKEY_CURRENT_USER ... Achja, meine Entwicklungsumgebung läuft auf XP64 Gruss EL |
Re: Verzeichnisrechte unter Vista
Was spricht dagegen die vorgeschlagenen Verzeichnisse zu nehmen? Wobei ich CSIDL_APPDATA bevorzugen würde.
|
Re: Verzeichnisrechte unter Vista
Zitat:
Sollte dann doch so ok sein? Wie komm ich an die Ordner? Denn die sind ja auch von Version zu Version unterschiedlich. Ich habe es mit DE, NL und EN Versionen von XP, XP64, Vista, Vista64 Gruss EL |
Re: Verzeichnisrechte unter Vista
War das nicht von Luckie?
Delphi-Quellcode:
Das sollte auf allen Systemen funktionieren.
function GetShellFolder(CSIDL: integer): string;
var pidl : PItemIdList; FolderPath : string; SystemFolder : Integer; Malloc : IMalloc; begin Malloc := nil; FolderPath := ''; SHGetMalloc(Malloc); if Malloc = nil then begin Result := FolderPath; Exit; end; try SystemFolder := CSIDL; if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then begin SetLength(FolderPath, max_path); if SHGetPathFromIDList(pidl, PChar(FolderPath)) then begin SetLength(FolderPath, length(PChar(FolderPath))); end; end; Result := FolderPath; finally Malloc.Free(pidl); end; end; Grüße, Messie |
Re: Verzeichnisrechte unter Vista
Die von Luckie ist wohl die 'sauberste'. Schnelle Lösungen hab ich oben gepostet - die sollten es auch tun. Hier nochmal der Hinweis auf das Video, dort wird das Ganze erklärt!
Da du in der Registry auf CURRENT_USER zugreifst gehe ich davon aus, dass dein Programm auch nur für den jeweiligen Benutzer und nicht für alle Benutzer des Computers gedacht ist. Ich würde daher auch wie Luckie meinte, CSIDL_APPDATA vorschlagen. Damit bekommst du mit seiner Funktion unter XP bei mir z.B. "C:\Dokumente und Einstellungen\Besitzer\Anwendungsdaten" - und auf anderen Systemen das entsprechende Verzeichnis. Und wenn du die Daten doch für alle Nutzer eines Computers verfügbar machen möchtest, wäre CSIDL_COMMON_APPDATA dein Freund. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz