Forum: PC-Programmierung Verzeichnis-Rechte während der Installation ändern


von Rahul D. (rahul)


Lesenswert?

Moin,
ich würde gerne die Zugriffsrechte eines Verzeichnisses während bzw. 
nach der Ausführung meines Installers (MS Visual Studio 2015 C#) ändern.
Es geht darum, dass das Program Konfigurationsdaten während des Betriebs 
im ProgramData-Verzeichnis speichert.
Solange man als Administrator angemeldet ist, ist das auch kein Problem.
Es sollen aber auch "Normalsterbliche" mit dem Programm arbeiten, was 
dazuführt, dass sie eine schöne Fehlermeldung bekommen, und damit nichts 
anfangen können.
Wie man das manuell erledigt, weiß ich - will es aber automatisieren.

Meine Suche im Netz hat nur "Icacls" zutage gebracht. Dafür müsste ich 
aber wohl vor der Istallation wissen, welche Benutzer/-Gruppen vorhanden 
sind, oder eine neue anlegen.

Es handelt sich um die Fortführung einer Software, die unter XP begonnen 
wurde - da gab es nur Adminstratoren.

Vielleicht hat jemand einen Link für mich.

Vielen Dank

von Peter II (Gast)


Lesenswert?

Rahul D. schrieb:
> Meine Suche im Netz hat nur "Icacls" zutage gebracht. Dafür müsste ich
> aber wohl vor der Istallation wissen, welche Benutzer/-Gruppen vorhanden
> sind, oder eine neue anlegen.

"jeder" gibt es überall. (oder "Benutzer") diese Gruppen habe auch 
eindeutige IDs, die sollte man dann verwenden weil es sonst auf nicht 
Deutschen System zu Problemen kommt.

Aber ist es nicht einfacher den Speicherort zu ändern?

von Oliver S. (oliverso)


Lesenswert?


von StinkyWinky (Gast)


Lesenswert?

"[...]da gab es nur Adminstratoren."

Autsch, und das mehr als 20 Jahre nach Windows NT.

von Georg (Gast)


Lesenswert?

Rahul D. schrieb:
> dass das Program Konfigurationsdaten während des Betriebs
> im ProgramData-Verzeichnis speichert.

Das ist schon solange Zeit eine obsolete Technik, dass man so etwas nur 
noch im Rahmen von Computer-Archäologie finden kann. Es wäre doch 
allmählich an der Zeit, das Programm auf das jetzige Jahrtausend 
anzupassen.

Eine Anpassung der Rechte oder das Arbeiten als Administrator sind 
unverantwortlicher Murks, ganz besonders dann wenn man die Software auch 
noch anderen unterjubeln will - auf dem eigenen Rechner kann man 
natürlich Mist bauen soviel man will, man trägt ja auch die Folgen 
selbst.

Georg

von Sven L. (sven_rvbg)


Lesenswert?

Dieses kleine Setupprojekt von VS studio kann nicht viel.

Ich habe mich deshalb mal mit dem Nullsoft Installer bechäftigt.
http://nsis.sourceforge.net/AccessControl_plug-in

Ansonsten gibt es auch noch Programme wie "Advanced Installer"

oder WiX http://wixtoolset.org/

Mit Nullsoft oder WiX kann man eine Menge machen, muss sich jedoch 
einarbeiten. der Advanced Installer hat ein GUI

von Arc N. (arc)


Lesenswert?

Rahul D. schrieb:
> Es handelt sich um die Fortführung einer Software, die unter XP begonnen
> wurde - da gab es nur Adminstratoren.

WinNT3.1 kam 1993 raus. Acht Jahre vor XP

>
> Vielleicht hat jemand einen Link für mich.
>
> Vielen Dank

Noch ein paar Ergänzungen zum bereits gesagten:
1. Früher gab's bzw. gibt's immer noch die Funktion ShGetFolderPath (ab 
W2k), davor hieß die SHGetSpecialFolderPath (ab W95, irgendwas mit dem 
IE war da noch...)
ShGetFolderPath
https://msdn.microsoft.com/de-de/library/windows/desktop/bb762181(v=vs.85).aspx
Auflistung der Ordner
https://msdn.microsoft.com/de-de/library/windows/desktop/dd378457(v=vs.85).aspx

2. .NET: Im System.Environment-Namespace 
https://msdn.microsoft.com/de-de/library/system.environment.specialfolder(v=vs.110).aspx 
nur falls man das braucht

3. Wenn die zu installierende Anwendung auch .NET ist: 
ApplicationSettings, die sich entweder im Projekt "zusammenklicken" 
lassen oder programmatisch erstellt werden können: 
https://msdn.microsoft.com/en-us/library/a65txexh(v=vs.140).aspx
und/oder
https://docs.microsoft.com/en-us/dotnet/framework/winforms/advanced/application-settings-overview
oder bei UWP:
https://docs.microsoft.com/en-us/windows/uwp/app-settings/store-and-retrieve-app-data

Edit: Noch ein guter, altbekannter Installer: Inno Setup 
http://www.jrsoftware.org/isinfo.php, Quelltexte: 
https://github.com/jrsoftware/issrc
icacls.exe oder ähnliche Scherze kann man damit ebenso aufrufen

: Bearbeitet durch User
von Rahul D. (rahul)


Lesenswert?

Vielen Dank für die Unterstützung und Ratschläge.
Die Links werde ich mir alle ansehen.
Wie sähe denn eine bessere Methode - sprich: speichern der 
Konfigurationsdaten ohne diesen Workaround am Besten aus?

Vielleicht noch etwas zum Programm:
Mit diesem Programm kann man sich die Daten unserer Sensoren 
vieualisieren (Messwerte in Graphen anzeigen etc).
Es ist eine kostenlose Zugabe zu unseren Systemen und hat daher eine 
eher geringere Priorität.

[Gejammer]
Der eigentliche Entwickler hat die Firma verlassen, weil er was anderes 
machen wollte.
Ich durfte einen komplett undokumentieren Haufen Sourcecode übernehmen.
[/Gejammer]

Übrigens habe ich es  scheinbar mit icacls und unserem 
Installer-Programm (seit 2011 keine neue Version mehr verfügbar) soweit 
hinbekommen.
Im Moment liegt die Priorität auf der Beseitigung von Fehlermeldung.
Die Systeme sind eigentlich immer Standalone - also keine weiteren 
Netzwerkverbindugen.

WiX und Inno Setup habe ich schon angesehen und werde der "Spur" weiter 
folgen.

Viele Grüße
Rahul

von Cyblord -. (Gast)


Lesenswert?

Rahul D. schrieb:
> Wie sähe denn eine bessere Methode - sprich: speichern der
> Konfigurationsdaten ohne diesen Workaround am Besten aus

Im Benutzerverzeichnis und nicht im Programmverzeichnis speichern.

von Sven L. (sven_rvbg)


Lesenswert?

Abradolf L. schrieb:
> Im Benutzerverzeichnis und nicht im Programmverzeichnis speichern.

...hat den Nachteil, das wenn mehrere Anwender...

Dan doch schon Eher "AllUsers" oder "ProgramData"

von Inno (Gast)


Lesenswert?

Bei Inno Setup ist das einfach.

Zuerst muss sichergestellt werden, dass das Setup nur als Administrator 
leuft:

[Setup]
PrivilegesRequired=admin

Dann erzeugt man den eigenen Ordner mit den richtigen Rechten:

[Dirs]
Name: "{commonappdata}\MeineApp"; Permissions: users-full

von Rahul D. (rahul)


Lesenswert?

Sven L. schrieb:
> Dan doch schon Eher "AllUsers" oder "ProgramData"

Und genau beim "ProgramData"-Verzeichins liegt das Problem: Da darf man 
als Normalbenutzer nicht reinschreiben.

Inno schrieb:
> Bei Inno Setup ist das einfach.
>
> Zuerst muss sichergestellt werden, dass das Setup nur als Administrator
> leuft:
>
> [Setup]
> PrivilegesRequired=admin
>
Danke!

> Dann erzeugt man den eigenen Ordner mit den richtigen Rechten:
>
> [Dirs]
> Name: "{commonappdata}\MeineApp"; Permissions: users-full
Das funktioniret auch mit "icacls". Ich werde das aber auf jeden Fall im 
Hinterkopf behalten.

von Stephan Wittig (Gast)


Lesenswert?

Rahul D. schrieb:
>> Sven L. schrieb:
>> Dan doch schon Eher "AllUsers" oder "ProgramData"
>
> Und genau beim "ProgramData"-Verzeichins liegt das Problem: Da darf man
> als Normalbenutzer nicht reinschreiben.

Tut es nicht, was Du meinst, ist "Program Files". "AllUsers" und 
"ProgramData" ist ein und dasselbe Verzeichnis und genau dafür gedacht, 
gemeinsam genutzte Programmdaten abzulegen.

swg

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.