![]() |
Vista und Schreibrechte
Hallo zusammen,
ich bin gerade am Verzweifeln... Ich möchte MP3-Dateien von A nach B verschieben. Dies Funktioniert auch soweit unter XP aber unter VISTA ist das bei manchen Rechnern nicht möglich. Es hagelt nur noch Fehlermeldungen bzw. er verweigert das kopieren. Nur wenn man in der Registerdatei des Ordners bei Sicherheit JEDER einträgt und auch volle Schreibrechte vergibt funktioniert es... Nur das kann ja nicht die Lösung sein, zumal das sehr unsicher ist ;-). Wie könnte ich nun das Ganze so umsetzen, dass mein Programm Zugriff hat. Ich habe hier aus dem Forum den folgenden Code zum kopieren der Dateien. Ich bin mir aber nicht sicher, ob nicht der das Problem ist. Hier der Code:
Delphi-Quellcode:
Danke!
function DoFileWork(
aWnd: HWND; aOperation: UINT; aFrom, aTo: TStrings; aFlags: FILEOP_FLAGS ): Integer; var I: Integer; FromPath, ToPath: string; SHFileOpStruct: TSHFileOpStruct; begin FromPath := ''; for I := 0 to aFrom.Count - 1 do FromPath := FromPath + aFrom.Strings[I] + #0; FromPath := FromPath + #0; if Assigned(aTo) then begin ToPath := ''; for I := 0 to aTo.Count - 1 do ToPath := ToPath + aTo.Strings[I] + #0; ToPath := ToPath + #0; if aTo.Count > 0 then aFlags := aFlags or FOF_MULTIDESTFILES; end; with SHFileOpStruct do begin Wnd := aWnd; wFunc := aOperation; pFrom := PChar(FromPath); if Assigned(aTo) then begin pTo := PChar(ToPath) end else begin // target available pTo := nil; end; // target not available fFlags := aFlags; end; // structure Result := SHFileOperation(SHFileOpStruct); end; if dxBarButton14.Down then dofilework(self.Handle,FO_COPY,von,nach,FOF_MULTIDESTFILES+FOF_RENAMEONCOLLISION) else dofilework(self.Handle,FO_MOVE,von,nach,FOF_MULTIDESTFILES+FOF_RENAMEONCOLLISION); // Die Variablen von, nach sind Stringlisten die gefüllt werden. P.s.: Ich habe gerade gesehen, dass das Programm die Dateien in das Programmverzeichnis kopiert oO. |
Re: Vista und Schreibrechte
Zitat:
Du wirst auch unter XP Fehlermeldungen bekommen wenn der User z.B. nur in der Gruppe "Gast" mitglied ist. |
Re: Vista und Schreibrechte
Zitat:
![]() Für Daten wie MP3s sind Verzeichnisse wie das Verzeichnis Eigene Musik oder ![]() |
Re: Vista und Schreibrechte
Hallo,
danke für Deine Antwort. Das mit dem Gastkonto ist klar und das würde ich auch verstehen. Aber sogar wenn ich Anwendung als Administrator laufen lasse, will er nicht das machen was er soll ;-) Kann das an der Kopierfunktion liegen? Zitat:
Danke! |
Re: Vista und Schreibrechte
Wenn der Anwender die Dateien in ein Verzeichnis legen möchte, das Adminrechte benötigt, dann kannst du anbieten dein Programm (mit ShellExecuteEx und dem Verb runas) mit Adminrechten zu starten. Oder du übergibst nur die Operation an eine weitere Instanz deines Programms und startest die mit Adminrechten.
|
Re: Vista und Schreibrechte
Danke für dein Antwort.
Leider weiß ich nicht ganz wie du das meinst ;-). Kannst du mir da ein paar Gedankenanstöße geben? Danke! |
Re: Vista und Schreibrechte
Zitat:
![]() |
Re: Vista und Schreibrechte
Zitat:
Ist ganz einfach. Die DP-Suche sollte hier helfen (zur Not auch das MSDN), Suchbegriffe wären etwa "ShellExecute Admin*", "ShellexecuteEx runas", etc. Grüße, Max |
Re: Vista und Schreibrechte
Ich habe hier einen Prototypen für einen Registryeditor vorgestellt, der sich selbst mit Adminrechten neustarten kann:
![]() Und hier habe ich eine etwas komplexere Anwendung, die teilweise Adminrechte benötigt, als Diagramm gezeigt (eine Updateklasse, die mittlerweile auch nahezu komplett umgesetzt ist): ![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:03 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