2009-10-08 6 views
1

Nous essayons de "verrouiller" un ordinateur de sorte que nous ayons un compte de connexion générique pour Windows XP qui a très peu d'autorisations. Notre logiciel est ensuite lancé via un lanceur qui l'exécute en tant qu'utilisateur plus privilégié, lui permettant d'accéder au système de fichiers.ValidateUser au lieu de LogonUser?

Ensuite, un opérateur se connectera à notre logiciel et nous espérions authentifier leurs informations d'identification en utilisant la fonction win32 LogonUser(). Le problème que nous voyons, cependant, est que nous voulons définir les opérateurs de logiciels avec une stratégie de groupe «Refuser l'ouverture de session localement», mais en configurant cela, cela empêche la fonction LogonUser() de fonctionner. Je comprends que nous pourrions contourner cela en passant LOGON32_LOGON_NETWORK au lieu de LOGON32_LOGON_NETWORK à LogonUser() mais je ne voulais pas vraiment faire car cela crée d'autres problèmes. Au lieu de cela, je me demandais s'il y a quelque chose comme la fonction ValidateUser() de C# en C++?

(BTW nous compilation avec VS2003 si c'est pertinent)

+0

La conception semble être fondamentalement cassée, et ce n'est donc pas une surprise pour moi que les API vous donnent des problèmes. Microsoft a passé beaucoup de temps à sécuriser la connexion Windows, et je ne pense pas qu'il soit possible d'atteindre ce niveau de sécurité dans une simple application. – MSalters

+0

Vous avez raison de dire que Microsoft a passé beaucoup de temps à sécuriser Windows - d'où notre décision d'essayer de réutiliser la base de données des utilisateurs Windows dans notre logiciel. –

Répondre

1

Si vous voulez plus de contrôle sur le processus de connexion, vous pouvez remplacer le login intégré par le vôtre, en utilisant un Gina dll. Writing your own signifiera probablement plus de travail que de trouver les bons arguments pour certains appels API, mais si vous cherchez une personnalisation complète, cela pourrait être la solution pour vous.

+0

Sous Windows Vista et les autres, les modules GINA ont été abandonnés au profit des fournisseurs de références. C'est une bonne chose parce que les fournisseurs d'informations d'identification sont beaucoup plus faciles à écrire. Pourtant, ils sont probablement exagérés pour cette situation et vous voudrez peut-être réévaluer votre approche. http://msdn.microsoft.com/fr-fr/magazine/cc163489.aspx –

1

Vous pouvez valider un ensemble d'informations d'identification en utilisant l'API WNetAddConnection2 pour établir une connexion à une action. Vous pouvez vous connecter à \\ YOURDC \ IPC $ ou peut-être quelque chose d'autre.

Une fois que vous avez vérifié les informations d'identification, n'oubliez pas de libérer la connexion.

Questions connexes