Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CopyFile() ohne Rechte in Vista? (https://www.delphipraxis.net/122511-copyfile-ohne-rechte-vista.html)

The Riddler 17. Okt 2008 10:13


CopyFile() ohne Rechte in Vista?
 
Hallo.

Leider habe ich kein Windows Vista zur Hand und kann daher mein Programm nicht testen. Ich meine mich zu erinnern das man unter Vista diverse Rechte braucht, um Dateioperationen wie CopyFile() oder DeleteFile() auszuführen. Mein Programm kopiert und löscht (durch den Benutzer) Dateien aus Programmordnern, also zum Beispiel C:\Programme\XXX. Wird CopyFile() und DeleteFile() unter Vista funktionieren oder werde ich Probleme mit Rechten bekommen?

Apollonius 17. Okt 2008 10:26

Re: CopyFile() ohne Rechte in Vista?
 
Für diese Ordner hat unter keinem Betriebssystem ein normaler Benutzer Zugriffsrechte.

The Riddler 17. Okt 2008 10:52

Re: CopyFile() ohne Rechte in Vista?
 
Mhm, also mit Admin-Rechten geht es. Jedenfalls sehe ich keine andere Möglichkeit, wie ich Dateien in den Programmordnern ändern kann. Gibt es eine? Kann ich also davon ausgehen, dass es unter Vista nicht gehen wird? Wie kann ich des dann realisieren?

Luckie 17. Okt 2008 11:27

Re: CopyFile() ohne Rechte in Vista?
 
Das geht schion unter NT nicht, wenn man nicht als Administrator angemeldet ist.

Was willst du denn für dateien im Porgrammverzeichnis ändern? Sollten es Konfigurationsdateien sein, gehören die dort nicht hin.

The Riddler 17. Okt 2008 12:03

Re: CopyFile() ohne Rechte in Vista?
 
Es sind unter anderem auch Konfigurationsdateien. Das die nicht dort hin gehören ist mir klar, machen kann ich dagegen nichts weil die zu verändernden Dateien zu Programmen gehören, die mir nicht gehören. ;)

D.h. ich bräuchte also Admin-Rechte für mein Programm? Wie kann ich die einholen?

Luckie 17. Okt 2008 12:08

Re: CopyFile() ohne Rechte in Vista?
 
Entwerder über den Explorer Kontextmenüeintrag "Ausführen als..." aufrufen oder übner die Konsole mit RunAs. Allerdings würde ich einfach die Rechte vom Programmverzeichnis so anpassen, dass auch nutzer mit Eingeschränkten Rechten dort schreiben dürfen. Und ich würde den Hersteller auf das Problem aufmerksam machen, damit er es eventuell beheben kann. Allerdings suche ich mir bei solchen Problemfällen meist ein anderes Programm. IconFX ist zum beispiel auch so ein Kanditat, der in das Programm verzeichnis schreiben will.

The Riddler 17. Okt 2008 12:19

Re: CopyFile() ohne Rechte in Vista?
 
Zitat:

Zitat von Luckie
Entwerder über den Explorer Kontextmenüeintrag "Ausführen als..." aufrufen oder übner die Konsole mit RunAs. Allerdings würde ich einfach die Rechte vom Programmverzeichnis so anpassen, dass auch nutzer mit Eingeschränkten Rechten dort schreiben dürfen.

Auf meinem PC mag das so gehen, bei den Anwendern meines Programmes wohl eher nicht. Wie kann sich das Programm selbst Admin-Rechte holen (vlt. auch in dem der User vorher gefragt wird ob er dies auch wirklich möchte)?

Alternativen sind leider nicht möglich. Und ich bezweifle auch, dass der Hersteller wegen mir kleinen Wurst seine komplette Software umstellen wird. ;)

Luckie 17. Okt 2008 12:30

Re: CopyFile() ohne Rechte in Vista?
 
Ja wie jetzt? Ich dachte, es wäre nicht dein Programm? Eventuell solltest du mal die Zusammenhänge etwas genauer erklären. ansonsten: Impersonate.

The Riddler 17. Okt 2008 12:35

Re: CopyFile() ohne Rechte in Vista?
 
Also nochmal:

Es gibt da ein Programm. Nennen wir es XYZ. Im Programmordner von XYZ gibt es z.B. ein Bild (also C:\Programme\XYZ\bild.jpg). Da dieses Bild nicht schön ist, soll dem User meines Programmes die Möglichkeit gegeben werden, dass Bild auzutauschen. Daher möchte ich die bild.jpg in dem Verzeichnis überschreiben.

jfheins 17. Okt 2008 12:41

Re: CopyFile() ohne Rechte in Vista?
 
Dann holst du dir mit deinem Programm Admin-Rechte (z.B. übers manifest) und tauschst das aus. Das Programm, dem das Bild gehört braucht ja nichts davon zu wissen, ergo braucht es auch keine Admin-Rechte ;)

Luckie 17. Okt 2008 12:44

Re: CopyFile() ohne Rechte in Vista?
 
Du willst alsoe eine Datei eines anderen Programmes mit Hilfe deines Programmes austauschen. Diese Datei liegt im Progranmmordner des betreffenden Programmes. Auf diese Datei hast du keinen lesenden Zugriff, weil dir die nötigen Rechte fehlen -- was auch richtig so ist.

Warum gibst du uns diese Informationen nicht gleich im ersten beitrag, damit man auch versteht, was du willst? :?

Also noch mal die Möglichkeiten:
- Explorer Kontextmenü "Ausführen als..."
- RunAs in der Konsole
- Mit der API-Funktion MSDN-Library durchsuchenImpersonateLoggedOnUser (http://www.michael-puff.de/Artikel/Impersonate.shtml)
- Programm mit Manifest ausstatten, damit es unter Vista Administratorenrechte anfordert (jfheins)

The Riddler 17. Okt 2008 12:53

Re: CopyFile() ohne Rechte in Vista?
 
Manifest? xpman.pas ist eingebunden aber ich glaube nicht das ihr das meint, oder?

Popov 17. Okt 2008 12:55

Re: CopyFile() ohne Rechte in Vista?
 
Zitat:

Zitat von The Riddler
Zitat:

Zitat von Luckie
Entwerder über den Explorer Kontextmenüeintrag "Ausführen als..." aufrufen oder übner die Konsole mit RunAs. Allerdings würde ich einfach die Rechte vom Programmverzeichnis so anpassen, dass auch nutzer mit Eingeschränkten Rechten dort schreiben dürfen.

Auf meinem PC mag das so gehen, bei den Anwendern meines Programmes wohl eher nicht. Wie kann sich das Programm selbst Admin-Rechte holen (vlt. auch in dem der User vorher gefragt wird ob er dies auch wirklich möchte)?

Alternativen sind leider nicht möglich. Und ich bezweifle auch, dass der Hersteller wegen mir kleinen Wurst seine komplette Software umstellen wird. ;)

Also nochmal und ganz langsam, denn ich merke in deinem Nachhacken, daß das du die Hoffnung nicht aufgegeben hast, daß es doch irgendwie noch geht.

Geht aber nicht.

Ist ja auch der Sinn der Sache, denn wozu eine Rechteverwaltung, wenn jeder sich ein Programm schreiben könnte das sich die Rechte holt?

Das wenige was geht sieht so aus:

- Programm im Administratorkonto ausführen, denn der Admin hat die Rechte
- Programm im eingeschränkten Konto starten und Programm über "Ausführen als..." als Administrator starten
- Programm im eingeschränkten Konto starten und Programm z. B. über ein Bachdatei mit der Zeile runas /user:"Administrator" "program.exe" als Administrator starten
- Programm im eingeschränkten Konto starten und für die letztlichen Änderungen ein Unterprogramm aus deinem Programm über runas als Administrator starten
- im Administratorkonto den anderen Benutzern die volle Kontrolle über die Datei oder Ordner geben. Sie kann dann später von jedem Benutzer verändert werden. Wobei einzelne Dateien geht ja noch, aber Rechte über Ordner sollte man nicht geben. Zumindest nicht wegen irgendwelcher Kraut und Wiesen Programme

jfheins 17. Okt 2008 12:59

Re: CopyFile() ohne Rechte in Vista?
 
Zitat:

Zitat von The Riddler
Manifest? xpman.pas ist eingebunden aber ich glaube nicht das ihr das meint, oder?

Das ist auch ein Manifest, aber es enthält eben nicht ein "Ich will Adminrechte" ;)

Näheres: http://www.delphipraxis.net/internal...t.php?t=130450

The Riddler 17. Okt 2008 13:03

Re: CopyFile() ohne Rechte in Vista?
 
Besten Dank Heinz, sieht so aus als wäre es das, was ich gesucht hatte.

Mit freundlichen Grüßen

http://img2.timeinc.net/ew/dynamic/i...fgorshin_l.jpg

Popov 17. Okt 2008 13:15

Re: CopyFile() ohne Rechte in Vista?
 
Zitat:

Zitat von The Riddler
Besten Dank Heinz, sieht so aus als wäre es das, was ich gesucht hatte.

Mit freundlichen Grüßen

Bist du sicher? Also mich würde es doch sehr wundern wenn das ginge. Oder andersrum, vielleicht geht das unter Vista aber sonst nicht. Da ich nicht mit Vista arbeite kenne ich das System nur bedingt. Ich weiß, daß man bei Vista ein Rechte-Kompromiss für Dummies entwickelt hat nach dem Motto, wenn der Prophet nicht zum Berg kommt, dann muß der Berg zum Propheten kommen. Somit scheint das hier so sein, daß Programme unter Vista wohl mit eingeschränkten Rechten startet und sich mehr Rechte holen kann wenn das möglich ist. Und darauf kommt es an. Denn ich glaube nicht, daß das funktioniert wenn man mit eingeschränkten Rechten arbeitet.

Ich kann mich aber auch irren, glaub ich aber nicht.

jfheins 17. Okt 2008 13:18

Re: CopyFile() ohne Rechte in Vista?
 
Das Manifest sorgt dafür, dass das Programm mit Administratorrechten gestartet wird.

Zumindest wenn:

1. Der Benutzer in dem Default-"Normaler Benutzer mit Adminrechten auf Nachfrage" Benutzerkonto unterwegs ist

2. Er es in der UAC Nachfrage erlaubt

Unter Windows XP und Co wird die Stelle im manifest ignoriert. (Die wissen ja eh nicht, was das bedeutet)

Popov 17. Okt 2008 13:25

Re: CopyFile() ohne Rechte in Vista?
 
Somit ist das eigentlich witzlos, nur etwas einfacher, denn auch sonst könnte ich prüfen ob ich die Rechte über die Dateien habe und wenn nicht, Adminrechte verlangen ;)

smallsmoker 17. Okt 2008 15:16

Re: CopyFile() ohne Rechte in Vista?
 
damit mache ich meine progrmaa immer uac "fit"
mfg smallsmoker


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:56 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz