mikrocontroller.net

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


Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter II (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: Oliver S. (oliverso)
Datum:

Bewertung
3 lesenswert
nicht lesenswert
https://social.technet.microsoft.com/wiki/contents...

Oder:

Du versuchst zwanghaft den falschen Weg.

Oliver

Autor: StinkyWinky (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"[...]da gab es nur Adminstratoren."

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

Autor: Georg (Gast)
Datum:

Bewertung
1 lesenswert
nicht 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

Autor: Sven L. (sven_rvbg)
Datum:

Bewertung
1 lesenswert
nicht 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

Autor: Arc Net (arc)
Datum:

Bewertung
0 lesenswert
nicht 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/d...
Auflistung der Ordner
https://msdn.microsoft.com/de-de/library/windows/d...

2. .NET: Im System.Environment-Namespace 
https://msdn.microsoft.com/de-de/library/system.en... 
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(...
und/oder
https://docs.microsoft.com/en-us/dotnet/framework/...
oder bei UWP:
https://docs.microsoft.com/en-us/windows/uwp/app-s...

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
Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Abradolf Lincler (Firma: Ricksy Business) (abradolf_lincler) Benutzerseite
Datum:

Bewertung
1 lesenswert
nicht 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.

Autor: Sven L. (sven_rvbg)
Datum:

Bewertung
0 lesenswert
nicht 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"

Autor: Inno (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Rahul Der trollige (rahul)
Datum:

Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.