Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

Berechtigungen sprachunabhängig setzen (Vista)


4 replies to this topic

baloup

baloup
  • Full Members
  • 4 posts

Posted 25 October 2007 - 13:42

Ich möchste im InstallShield 2008 (InstallScript MSI Projekt) Berechtigungen setzen:

1. Auf einen Folder in %ALLUERSPROFILE%
2. auf meinen eigenen Hive in der Registry (HKLM\Software\MyApp)

Ich möchte, dass jeder FullControl bekommt. (Das ist leider notwendig, weil es eine alte Applikation ist, die ohne diese Rechte nicht funktioniert und keine Zeit ist, die Applikation zu ändern). In HKCU schreiben bzw. ins User-Verzeichnis ist leider auch keine Option, alle User sollen auf die gleiche Registry und das gleiche Verzeichnis zugreifen.

Ich habe es versucht mit "Dateien und Ordner" rechte Maustaste auf Verzeichnis, "Eigenschaften" - "Zugriffsrechte". Dort muss man dann Domäne und Benutzer eingeben. (Bei der Registry bin ich analog verfahren).

Ich habe es einmal probiert mit Benutzer "USERS". Das funktioniert, wenn das OS englisch ist. Wenn das OS aber deutsch ist, bricht die Installation mit einer Fehlermeldung ab:

"Error 1609: An error occurred while applying security settings. USERS is not a valid user or group. ..." (die Meldung ist englisch, weil mein Setup nur englisch unterstützt).

Unsere Applikation soll in 25 (!) Sprachen angeboten werden. Natürlich werden die auch die entsprechenden Betriebssysteme verwenden. Wie kann ich die Berechtigungen so setzen, dass jeder Full Control hat - und das sprachunabhängig? Ich möchte mich weder auf einen Usernamen oder eine Gruppe festlegen (ich weiss ja gar nicht, ob es die am Zielsystem gibt). Am besten wäre daher "Everyone" oder etwas ähnliches.

Ich habe ein wenig gegoogelt, aber nur Hinweise gefunden, wie man z.B. mit "cacls.exe" Berechtigungen ändern kann. Das könnte funktionieren, aber dann muss ich z.B. "Everyone" auf 25 Sprachen übersetzen und jedes mal checken, in welcher Sprache das Betriebssystem ist?

Weiss jemand eine einfachere Lösung? Danke!

Barbara

baloup

baloup
  • Full Members
  • 4 posts

Posted 29 October 2007 - 10:52

Hallo!

Ich habe es jetzt noch einmal probiert, diesmal mit "Everyone" statt wie bisher "USERS". Jetzt geht's (zumindest am deutschen Vista). Mir ist nicht ganz klar, warum "Everyone" offensichtlich in die jeweilige Sprache gemappt wird und "USERS" nicht (vielleicht weil das eine Gruppe ist)?

Bin froh, dass es funktioniert! Wenn jemand noch Hintergrund-Info dazu hat, wäre ich aber trotdzem dankbar, damit ich auch weiss, warum es so ist...



Barbara

Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 29 October 2007 - 17:17

"Everyone" und "Administrators" werden von Windows Installer (ab Version 2.0) automatisch lokalisiert, alle anderen Gruppen nicht. Dafür gibt's ein Tool (ein Merge Modul, das die lokalisierten Gruppennamen in Properties ablegt), siehe "Using the LockPermissions Table on Localized Windows Versions" unter http://www.installsi...en/msi/tips.htm

StYerk

StYerk
  • Full Members
  • 33 posts

Posted 14 November 2007 - 18:13

Hallo,

ich habe momentan ein ähnliches Problem mit einem Basic MSI Installer Projekt (IS 12).

Der Installer erstellt per CustomAction eine Netzwerkfreigabe, die ja ab Server 2003 als Default nur Leserechte erhält, auch wenn das freigegebene Verzeichns Vollzugriff erlaubt.

Ich gebe in der Action dem Befehl 'net share' die Option '/GRANT:[USER],FULL' mit
und setze [USER] vorher in Abhängigkeit von [SystemLanguageID] auf 'Jeder' oder 'Everyone' (Wir unterstützen nur Deutsch und Englisch).

Leider funktioniert das nicht, wenn der Kunde auf einem englischen System eine Deutsche Locale eingestellt hat; Der Installer meint, das System sei deutsch (SystemLanguageID ist offensichtlich die deutsche) und es wird versucht, den User 'Jeder' zu verwenden, der heißt aber 'Everyone'.

Da es kein Verzeichnisrecht, sondern eine Freigabe ist, hilft die LockPermissions-Table hier nicht (oder?).

Das oben beschriebene Merge-Modul würde wohl helfen, aber gibt es nicht eine offizielle Möglichkeit, den tatsächlichen Namen des 'Everyone'-Users zu bestimmen oder zumindest die 'wirkliche' Sprache des Systems?

Vielen Dank,

Gruß,
Jörg Rohrschneider



Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 15 November 2007 - 20:25

Das MergModule ermittelt den lokalisierten Gruppennamen. Den kann man in LockPermissions verwenden, aber auch anderswo. Du könntest also das entsprechende Property auch für deine net Kommanozeile verwenden.