Question

J'essaie de créer un programme d'installation Windows à l'aide de Nullsoft Install System, qui nécessite une installation par un administrateur. Le programme d’installation crée un & Quot; journal & Quot; annuaire. Étant donné que les utilisateurs normaux peuvent exécuter cette application, ce répertoire doit être accessible en écriture pour les utilisateurs normaux. Comment puis-je spécifier que tous les utilisateurs doivent être autorisés à avoir un accès en écriture à ce répertoire en langage de script NSIS?

J'admets que cela ressemble à une sorte de mauvaise idée, mais que l'application est juste une application interne utilisée par seulement quelques personnes sur un réseau privé. J'ai juste besoin de sauvegarder les fichiers journaux pour pouvoir voir pourquoi l'application est endommagée si quelque chose de mauvais se produit. Les utilisateurs ne peuvent pas être nommés administrateurs.

Était-ce utile?

La solution

Utilisez le plug-in AccessControl , puis ajoutez-le au script, où & ; journaux " Le répertoire est dans le répertoire d'installation.

AccessControl::GrantOnFile "$INSTDIR\logs" "(BU)" "FullAccess"

Cela donne un accès complet au dossier à tous les utilisateurs.

Autres conseils

AccessControl::GrantOnFile "<folder>" "(BU)" "FullAccess" ne fonctionnait pas pour moi sur un ordinateur Windows Server 2008. Au lieu de cela, je devais utiliser celui-ci:

AccessControl::GrantOnFile "<folder>" "(S-1-5-32-545)" "FullAccess"

S-1-5-32-545 est équivalent à " Utilisateurs " selon http://support.microsoft.com/default.aspx ? scid = kb; EN-US; Q243330

Au lieu de modifier les autorisations sur les répertoires sous Program Files, pourquoi ne pas placer les journaux dans un emplacement accessible en écriture pour tous les utilisateurs.

Consultez la section 4.9.7.7 SetShellVarContext dans votre documentation NSIS. Vous pouvez l’utiliser avec $ APPDATA pour obtenir le dossier de données d’application accessible en écriture pour tous les utilisateurs.

C’est un vieux problème maintenant, mais comme suggéré par S & # 246; le répertoire APPDATA est un bon moyen de faire ce que vous voulez, le principe est le suivant: Ne prenez pas APPDATA personnel de l'utilisateur, mais le & "Tous les utilisateurs &"; APPDATA dir! De cette façon, tout le monde pourra accéder au fichier journal; -)

J'ai aussi lu quelque part que l'utilisation de (BU) sur GrantOnFile ne fonctionnait pas bien avec certains systèmes (Win 7 x 64 si mes souvenirs sont exacts), vous devriez peut-être utiliser le SID & (S-1-5). -32-545) & Quot; à la place (c'est le SID de tous les utilisateurs, cette valeur est une constante sur chaque système d'exploitation Windows)

One way: appelez le shell et utilisez cacls ou xcacls .

Pourquoi ne pas créer un répertoire de journal dans le répertoire% APPDATA% de l'utilisateur? Avez-vous vraiment besoin de mettre tous les journaux dans le répertoire d'installation? Pourquoi?

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top