2010-02-09 7 views
2

Je me demande s'il est possible de programmaticaly dossiers partagés dans Windows 7 lors de l'exécution en session d'ouverture de session restreinte:partage dossier Windows 7 API

1) retourne NetShareAdd ERROR_ACCESS_DENIED. 2) Le partage net de la ligne de commande indique la même chose. 3) Mais l'explorateur n'a aucun problème pour créer de nouveaux partages sans invoquer UAC. Comment fait-il cela?

Toute aide sera grandement appréciée. L'UAC dans Windows 7 est moins strict que dans Vista.

+0

Voulez-vous dire une session non-administrateur? –

+0

Non, c'est administrateur, mais pas administrateur réel (UAC) – GoAvs

+0

Etes-vous sûr que l'explorateur crée réellement le partage? Par exemple, si je partage un sous-répertoire de quelque chose qui est déjà partagé, je ne vois pas le bouclier; Toutefois, si j'essaie de partager quelque chose qui n'est pas déjà partagé, l'icône du bouclier s'affiche. –

Répondre

0

Windows 7 considère l'Explorateur comme une application de confiance, de sorte qu'il créera le partage en mode silencieux sans invite UAC (vous pouvez modifier ce comportement dans le Panneau de configuration).

Votre application n'est pas de confiance (OK, vous lui faites confiance, mais pas le système d'exploitation). Vous ne demandez probablement pas explicitement les droits d'administrateur dans votre application. Dans ce cas Windows 7 traite votre programme comme non privilégié et refuse l'accès, c'est pourquoi le message d'erreur.

Une solution pourrait être d'ajouter un manifeste à votre programme demandant un ExecutingLevel de requireAdministratior. Voir par exemple Demand UAC elevation for an application by adding a manifest. Mais alors votre application entière s'exécute en tant qu'administrateur. Il y a des solutions plus granulaires.

+0

Merci pour l'explication (partie d'application de confiance) – GoAvs

+0

Quelles sont les approches les plus granulaires? Je voudrais éviter d'escalader mon application pour l'exécuter en tant qu'administrateur, mais j'ai besoin de partager des dossiers (par exemple). – gap