J'ai besoin d'éviter l'installation si le compte d'utilisateur de connexion est limité. La clé privilégienne n'est pas ce que je cherche. C'est la valeur déjà définie comme "admin" par défaut. Donc, cette variable n'a rien à voir avec ma question. Je ne veux pas installer Même Windows Demander le mot de passe administrateur est correct. Je souhaite simplement éviter toute installation si le compte loginé ne contient pas de privilections d'administrateur. P>
Aucune option pour "Exécuter uniquement si l'utilisateur actuel est un compte administrateur"? P>
3 Réponses :
Comme Martin m'a pointé ce que je devrais me concentrer, j'ai compris le problème. Windows ne devrait pas me demander les crédits. Cela devrait cesser de demander. et les privilègesRequired = le plus bas. Mais cette fois, l'installateur arrête les modifications dans les varaibles d'environnement, etc. Les codes ci-dessous ne sont pas la réponse, mais je pense que cela peut aider quelqu'un. "PrivileGeQuirequitéd = la plus basse" désactive totalement l'accès aux variables d'environnement et ainsi. cela a fait des résultats problématiques. Je vais résoudre le problème avec la création d'une DLL supplémentaire et partagerai ici bientôt.
;relevant. but not the right answer [Setup] PrivilegesRequired=lowest . . . [Code] //IsAdminLoggedOn or isAdmin //not checks Current user Account Type if you run install as admin function InitializeSetup(): Boolean; begin Result:=True; if not (isAdmin) then // isAdmin built-in inno function... begin MsgBox('The installation needs administrator account.', mbInformation, MB_OK); Result := False; end;
isadmin code> ne vous dit pas si l'utilisateur est admin. Il vous indique si l'installateur s'exécute avec les privilèges d'administrateur. Avec
PrivileGeRésRéquitée = Le plus bas code>, le programme d'installation ne fonctionnera jamais avec les privilèges d'administrateur, sauf exécution explicite par Administrator à l'aide de "Exécuter en tant qu'administrateur".
"Les fenêtres ne doivent pas me demander les crevettes": pourquoi pas? Quel problème résout-il si vous empêchez l'invite d'identification?
Pensez que vous avez 2 comptes d'utilisateurs. Vous êtes connecté à un compte limité / standard. Et donc vous connaissez la passe d'administration. lorsque vous essayez d'installer. Windows demandera à l'un des passe de l'administrateur. et vous entrez. et l'application de Voila est installée dans un compte Windows limité.
Non, ce n'est pas ce qui se passe. Si vous êtes connecté à l'aide d'un compte qui n'est pas membre de administrateurs code> et que vous demandez admin, l'installation exécute comme utilisateur admin i>, pas le compte connecté.
Il est difficile de mettre en œuvre. L'invite UAC est affichée par OS avant même que le programme d'installation ne soit en train de démarrer. Mais vous avez besoin de l'invite de l'UAC pour obtenir les privilèges d'administrateur, même si l'installateur est exécuté par l'administrateur. Donc, vous ne pouvez pas vraiment vous en débarrasser. P>
Vous devrez utiliser Si l'utilisateur n'est pas administrateur, affichez un message et quittez. Si l'utilisateur est administrateur, redémarrez l'installateur avec une invite UAC. Pour une façon de mettre en œuvre cette partie, voir la deuxième partie de ma réponse à: Globalement, je pense que trop de travail pour quelque chose que je ne crois pas en vaut la peine. em> p> PrivileGeeCequired = le plus bas code> pour éteindre l'invite de l'UAC. Ensuite, testez si l'utilisateur actuel dans un membre du groupe administrateur (qui pourrait avoir besoin d'une question distincte). P>
Make Inno Configuration Inno Installateur Demander les privilèges Seuls uniquement en cas de besoin P>
Question: "Comment empêcher l'installation du compte d'utilisateur Windows limité?" P>
Réponse: Utilisez à partir du Documentation : P>
Valeurs valides: Valeur par défaut: Lorsqu'il est défini sur Lorsqu'il est défini sur PrivileGeGeQuired = admin code> dans votre
[Configuration] code> section. P>
admin code> ou
le plus bas code> p>
admin code> p>
Cette directive affecte si les droits élevés sont demandés (via une boîte de dialogue de contrôle de compte d'utilisateur) lorsque l'installation est démarrée. P>
admin code> (la valeur par défaut), la configuration fonctionnera toujours avec des privilèges administratifs et dans Mode d'installation administrative . Si la configuration a été démarrée par un utilisateur non privilégié, Windows demandera au mot de passe à un compte disposant de privilèges d'administration, et la configuration s'exécutera ensuite sous ce compte. P>
le plus bas code>, la configuration ne demandera pas d'exécuter des privilèges administratifs même s'il a été démarré par un membre du groupe Administrateurs et sera toujours exécuté dans Mode d'installation non administratif . N'utilisez pas ce paramètre, sauf si vous êtes sûr que votre installation fonctionnera avec succès sur des comptes non privilégiés. P>
blockQuote>
Les informations d'identification de l'administrateur n'empêchent pas l'installation par les utilisateurs sans privilèges d'administrateur?
Oui, Windows demande à l'invite des informations d'identification de l'administrateur. Mais ce n'est pas ce que je veux. Il y a une option dans "Avancé Installer" évite totalement l'installation si le compte utilisateur loginé n'a aucun droit d'administrateur. Et cette fonctionnalité est ce que je cherche. Donc, il semble que ce ne soit pas possible dans Inno. Donc, il est possible d'écrire ma propre dll qui retourne true / false à Innosetup afin que la configuration soit sortie ou cessera de continuer?
Vous n'avez pas vraiment répondu à ma question.
Il invite. Et si vous entrez un mot de passe administrateur, la configuration continue à installer dans un compte utilisateur limité. Ça ne devrait pas demander. Il devrait simplement arrêter de continuer sans demander "l'invite d'identification de l'administrateur". Je veux vérifier si l'utilisateur "loginé" est limité ou non. Si limité, cela devrait cesser de continuer sans demander une invite d'identification. Alors, y a-t-il un moyen de définir cette fonctionnalité comme ma propre dll que je peux intégrer en installation?
L'installateur exécute le compte dont vous entrez les privilèges. Pas pour le compte initial limité.
ça ne devrait pas. Il devrait cesser de continuer sans demander le mot de passe des informations d'identification administrateur .. C'est ce que je cherche.
"Je ne veux pas installer Même Windows Demander le mot de passe administrateur est correct" - pourquoi?
Yeap, c'est le point. C'est parce que mon application ne fonctionne pas comme prévu sous un compte Windows limitée, même l'installation et l'EXE principal possède des privilèges d'administrateur. ... en quelque sorte toutes les fonctions renvoie true si l'exécutable fonctionne comme administrateur. L'exécution d'une application comme administrateur ne signifie pas que l'utilisateur connecté est admin. Les API ou les fonctions connues ne vérifient que si l'utilisateur connecté est administrateur ou non. c'est déroutant. Cela semble manquer de problème logique des développeurs de Windows.
En quelque sorte, l'installateur avancé peut détecter comme prévu, peu importe si EXE est exécuté comme administrateur ou non. J'ai construit une DLL et j'ai essayé différentes fonctions. Tous ne se lent pas vers un compte connecté mais regarde si EXE est exécuté comme administrateur ou non.
Tout cela ressemble à XY problème à moi. Vous résolvez un mauvais problème.
"C'est parce que mon application ne fonctionne pas comme prévu sous une comptate Windows limitée, même l'installation et l'EXE principal a des privilèges administratifs [SIC]" - Cela semblerait être un problème avec votre application, pas l'installateur. (Je suis d'accord avec Martin que vous semblez essayer de résoudre le mauvais problème.)
J'ai fini par ajouter une étiquette "Ne pas installer sous des comptes d'utilisateurs standard / limitée". Solution simple. (BTW, ... l'application utilise des dlls pilotes compilés qui ne fonctionnent pas comme prévu sous les utilisateurs limités, donc je ne peux pas supprimer / modifier.) .. J'ai trouvé la solution via la DLL qui vérifie "nom de domaine" et non le "nom d'utilisateur" ou similaire . Obtenir le nom d'utilisateur envoie toujours l'utilisateur qui exécute l'EXE. Compte loginé non par défaut. Filtrer les "administrateurs locaux nets" et la vérification avec "nom de domaine actuel" semble la solution. J'ai construit une DLL supplémentaire pour Inno semble fonctionner. Nettoyez les codes et la poste dans les prochains jours après les tests.
PrivIRELSEquires = Le plus bas code> force le mode d'installation non administratif. Par la documentation: "N'utilisez pas ce paramètre, sauf si vous êtes sûr que votre installation fonctionnera avec succès sur des comptes non privilégiés."
Je ne comprends toujours pas votre problème. Si le programme d'installation est exécuté à partir d'une session d'un compte non administrateur et que le programme d'installation est
PrivILEGEQUESQUIRE = admin code>, l'invite UAC s'affiche. L'installateur ne procédera que si des informations d'identification de l'administrateur sont fournies. Et le programme d'installation fonctionnera en tant qu'administrateur B>. Le compte "limité" d'origine n'a aucun effet sur le processus d'installation. Si votre installateur ne fonctionne pas, vous avez fait quelque chose de mal. Posez une question à ce sujet à propos de ce problème, plutôt à essayer de le contourner.
Résolu .. La question était simple. "Je voulais que l'installation ne fonctionne que si l'administrateur est déjà connectée. Je ne veux pas que Windows interrompt et demande un mot de passe administrateur. J'ai fait une DLL. Intégré à la configuration. Qui vérifie le nom d'utilisateur de connexion existant est un administrateur déjà identifié via filtrage" net localgroup Les administrateurs ». En conclusion .. Résolu. Je publierai bientôt. Je sais que ce n'est pas une question habituelle, mais personne n'a à penser que les autres. On dirait quand vous avez besoin de Pizza PPL vous désigne de manger Taco.
L'explication n'a toujours aucun sens pour moi. Pourquoi importe-t-il si la configuration invite les informations d'identification de l'administrateur? Si vous ne fournissez pas de références, la configuration ne se poursuit pas (elle ne peut pas!). Si vous fournissez des informations d'identification valides, la configuration installe comme utilisateur pour lequel vous avez fourni les informations d'identification i> (pas l'utilisateur connecté).
Cette option existe déjà dans "Installer avancé". Lorsque vous vérifiez sur "Exiger le compte d'administrateur", Windows ne pose pas de mot de passe administrateur et il jette simplement une erreur et quitte. Et si l'utilisateur limité connaît le mot de passe? la configuration va continuer. ça ne devrait pas. BTW, le cerveau humain lui-même, n'aime pas les situations inhabituelles et comme compilateur, chaque problème doit être associé à un résolution. Après que le cerveau humain construit cette paire, ses éléments couplés difficiles à se séparer de faire de nouvelles paires. Mais, Lifeworks comme interprète pas un compilateur. Tout change régulièrement et que les idées fixes ne peuvent pas continuer à persister de vivre.
"Cette option existe déjà dans" Installateur avancé ". Lorsque vous vérifiez" Exiger un compte d'administrateur ", Windows ne pose pas de mot de passe administrateur et il jette simplement une erreur et quitte." Vous pouvez utiliser "Exécuter en tant qu'administrateur" pour l'exécuter et cela ferait la même chose que ce qui est. Quel problème résoudra-t-il cela?
Pardon. Option d'installateur avancé Son nom n'est pas "Exiger un compte d'administrateur". Il est "exécuté uniquement si l'utilisateur actuel est un compte administrateur". Ce n'est pas la même terminologie. Et oui, j'ai vérifié, vous ne pouvez pas installer en double-cliquant. Mais exécuter un programme d'installation via une souris droite difficile, cliquez sur "Exécuter en tant qu'administrateur", il demande des informations d'identification d'administration. Double-cliquez sur PrevenTst Installer et ne pas demander des informations d'identification d'administration.
Vous n'avez toujours pas répondu à la question du problème réel que vous essayez de résoudre. Quelle différence signifie-t-il si Inno Configuration demande des informations d'identification administratives? Plus précisément, quel problème essayez-vous de résoudre en l'empêchant de le faire?