2010-10-05 27 views
2

J'ai un système, je l'ai mis en place comme un normal avec UAC, et dans mon environnement Delphi je compile mon projet nommé ka.exe, je crée un projet installshield pour cela.L'application nouvellement compilée nécessite un contrôle de compte/élévation?

configuration et tout se termine bien! mais chaque fois que je commence mon programme, il faut l'élévation et je ne sais pas pourquoi.

juste pour être sûr que installshield ne joue pas à des jeux d'esprit sur moi, j'ai compilé un nouveau fichier .exe, et copiez-le manuellement sur mon ordinateur en réseau.

l'icône est la même, et elle a également ce bouclier UAC.

mon projet a des fonctions à l'intérieur qui pourraient être parler avec un réseau nom partagé, et parler avec une base de données SQL ...

alors pourquoi mon application besoin d'élévation pour courir?

+0

Accède-t-il à des fichiers sous le dossier c: \ program files? Écrire dans un fichier INI, par exemple? –

+0

Ce que votre code essaie de faire ne provoquera JAMAIS d'élévation. –

Répondre

3

Tout d'abord, si vous êtes en mesure de Delphi, ajouter un manifeste intégré avec asInvoker. Si vous ne pouvez pas, faites-en un externe et placez-le dans le même dossier que l'exe. Si le bouclier disparaît, c'est parfait.

Si ce n'est pas le cas, les choses se compliquent. Parfois, lorsque vous exécutez une application, Windows arrive après et dit "cela n'a peut-être pas fonctionné, voulez-vous essayer à nouveau avec les paramètres recommandés?". Si vous dites "OK", une stratégie de groupe est stockée pour élever cette application pour le reste du temps. Il semble que si vous renommez l'exe, l'effet de la stratégie de groupe s'arrête. Tu pourrais essayer ça.

+0

@Plastkort lequel a travaillé? le manifeste ou le renommer? –

+0

J'ai essayé l'asInvoker et cela n'a pas fonctionné mais en renommant le fichier. –

0

Sous Windows Vista et versions ultérieures, lorsque l'UAC était activé, les administrateurs ne disposaient toujours pas de tous les droits comme nous l'avons vu dans Windows XP et les versions ultérieures. Si votre programme essaie de faire une des tâches administratives (par exemple des requêtes dans des emplacements protégés du système, écrire des données dans des emplacements protégés tels que% ProgramFiles%, répertoire Windows, HKEY_LOCAL_MACHINE et bien d'autres), votre programme doit demander l'élévation invite à apparaître qui nécessite l'approbation des administrateurs.

Vous obtiendrez des informations détaillées here

+0

La question n'était pas "pourquoi mon application a-t-elle besoin d'élévation et échoue-t-elle sans cela?", C'était "pourquoi mon application demande-t-elle une élévation?" Alors que ce serait cool si les applications demandaient l'élévation simplement parce qu'elles en avaient besoin, ce n'est pas ce qui se passe. Les raisons pour lesquelles les applications demandent une élévation ne sont pas évidentes pour la plupart des développeurs - certaines d'entre elles sont listées dans d'autres réponses à cette question. –

+0

Ma réponse peut même être appliquée à la dernière. Le questionneur devrait fournir suffisamment de contexte et de description d'attente, de sorte qu'il n'y ait pas d'interprétation multiple à sa question. – Vantomex

3

Même si le nom de fichier n'a pas de chaîne "SETUP" ou "INSTALL", Windows peut penser qu'il doit être élevé si les ressources VersionInfo incluent de tels textes.

Vérifiez VersionInfo, essayez de nettoyer toute chaîne suspecte, car je crois que Windows vérifie encore plus de textes (comme les textes non-anglais).