wie stelle ich es an, dass ich aus meiner Anwendung heraus, die mit Adminrechten läuft, einer Datei, die von der Anwendung neu erstellt wurde, allen Useren vollen Zugriff gewähre? Momentan ist es so, dass die Datei, da sie aus einer Anwendung mit Adminrechten heraus erstellt wurde, auch nur für User mit Adminrechten beschreibbar ist, alle anderen User dürfen die Datei nicht verändern.
Um die Rechte Deiner Anwendung nur in bestimmten Situationen anzuheben, würde ich mich mit UserAccountControl (UAC) auseinandersetzen. Hier noch ein Link und hier noch ein Beispiel.
Wenn Deine Anwendung nur bei vereinzelten Aktionen elevated privileges benötigt, solltest Du das Control (meist ein Button) mit dem Elevation-Icon anzeigen, so dass der User sieht, das diese Aktion erhöhte Rechte benötigt und evtl. dem verlinkten Beispiel folgen. Wenn Deine Anwendung andauernd erhöhte Rechte benötigt, solltest Du überlegen, sie mit einem Manifest auszustatten und dieses zu signieren.
Vielen Dank für die Hinweise, ich schau' mir das mal in Ruhe an. Meine Anwendung benötigt auch nur für bestimmte Aktionen Adminrechte, da wäre so eine Lösung ja genau richtig.
Was noch security-technisch wichtig wäre dass in der Phase in der Du mit erhöhten Rechten arbeitest kein File Open/Save Dialog einblendest. Am besten überhaupt keine User Interaktion.
In dem konkreten Fall muss es sein, da die Anwendung Programme in den Programmordner installiert und dafür benötigt sie Adminrechte,zumindest wüsste ich sonst keinen anderen Weg, wie ich Dateien dort hin bekommen würde, ohne Adminrechte. Aber unabhängig von dem konkreten Fall, benötige ich die Möglichkeit aus dem Programm heraus die Zugriffsrechte für Anwendungsdateien zu setzen.
Die verwendete Programmiersprache ist C# mit .NET 4.0, sorry, das hatte ich vergessen zu erwähnen.
Das ist aber eher eine Aufgabe für den Installer und nicht für die Anwendung. Damit würdest Du diese Applikation niemals in einen Firmen (Enterprise) Umfeld genehmigt bekommen.
Den habe ich am Anfang auch verwendet. Nur leider "spinnte" der Installer immer mal wieder rum, sodass ich mich dann für eine eigene Lösung entschieden habe. Auf manchen PCs ließ sich die Setup.Exe z.Bsp. gar nicht starten, da kam nach dem Start gleich eine Meldung, dass die Setupdatei auf diesem System nicht ausgeführt werden kann (oder so ähnlich) oder es passierte, dass beim Starten der Anwendung über die Desktopverknüpfung der Installer irgend etwas nachinstallieren wollte und nach der ursprünglichen MSI gefragt hat, diese dann aber nicht als gültiges Installationsmedium akzeptiert hat.
In dem Zusammenhang habe ich da gleich noch eine Frage, wie kann ich eigentlich abfragen, welche User auf dem aktuellen PC alle angelegt sind, also der Wert, den ich dann als "account" übergeben muss?
Brauchst Du nicht. Es gibt einen Benutzer "Jeder". Schliesslich kann es sein dass der Benutzer zum Zeitpunkt der Aktion auf dem lokalen System noch gar nicht bekannt ist.
Abgesehen davon, in welcher Sprache ist Deine Anwendung geschrieben?