2010-10-15 33 views
0

Je dois écrire un raccourci dans le dossier de démarrage automatique pour tous les utilisateurs.obtenir par programme l'autorisation d'écriture de dossier spécial à l'aide du contrôle d'accès utilisateur dans Windows 7 et Vista

Le scénario est qu'un utilisateur avec des privilèges d'administrateur, à travers la boîte de dialogue de configuration de l'application, doit pouvoir définir l'application pour démarrer automatiquement pour tous les utilisateurs normaux lorsqu'ils se connectent.

je reçois le dossier de démarrage en utilisant

SHGetSpecialFolderPath(NULL, startFolderPath, CSIDL_COMMON_STARTUP, FALSE) 

mais je ne dispose pas de droits d'écriture sur ce dossier, même lorsque l'utilisateur connecté fait partie du groupe du Adminisrator.

Je suppose que j'ai besoin d'appeler une fonction API liée au contrôle de compte d'utilisateur (UAC) pour demander la permission à l'utilisateur connecté d'élever le privilège actuel.

Cela devrait fonctionner sur Windows XP trop

Répondre

1

Lorsque vous dites que vous ne disposez pas des droits d'écriture sur le dossier, était l'application ou de l'outil que vous utilisez pour écrire en cours d'exécution élevé? C'est, en cours d'exécution en tant qu'administrateur? Ce n'est pas la même chose que d'être exécuté par un compte administrateur. Sinon, faites un clic droit sur l'exe et choisissez Exécuter en tant qu'administrateur. Cela va élever l'application et probablement lui permettre de terminer la tâche de configuration.

Ceci n'est pas lié au contrôle d'accès utilisateur ou à la sécurité d'accès au code. C'est l'UAC qui protège HKLM, les fichiers programme et d'autres paramètres par utilisateur.

+0

Merci, j'ai confondu UAC avec le contrôle d'accès utilisateur. Je vais le corriger en tant que contrôle de compte d'utilisateur dans ma question initiale. – sergiom

+0

Je ne veux pas que mon application soit exécutée en tant qu'administrateur. Je veux juste élever les privilèges seulement pour le peu de temps nécessaire pour créer le raccourci. Je veux afficher la fenêtre UAC pour demander à l'utilisateur la permission de modifier les paramètres protégés, comme le font les programmes d'installation. – sergiom

+0

C'est ce que je dis aussi. La chose qui écrit dans le registre doit être élevée. Si vous voulez que cela se surélève et que le reste ne le soit pas, placez-le dans un exe séparé, mettez un manifeste dessus avec requireAdministrator, et utilisez ShellExecute pour le lancer. –