7
votes

Pourquoi Windows ne permet-il pas que Winsock soit démarré tout en reprochant un autre utilisateur?

Utilisation de mon propre programme ou d'autres personnes, je ne peux pas obtenir Winsock à exécuter lorsque vous appelez si le processus est créé avec CreateProcesswithlogonw ou CreateProcessSasserw. Il renvoie cette erreur lorsque je crée la prise:

The requested service provider could not be loaded or initialized.


0 commentaires

6 Réponses :


3
votes

Peut-être que l'utilisateur que vous avez exécuté le processus n'est pas autorisé à utiliser la pile TCP / IP?

Essayez de démarrer l'application avec un utilisateur d'administrateur qui n'est pas votre propre compte.


1 commentaires

Mon compte est un compte limité qui crée le processus qui utilise Winsock comme administrateur. Les deux peuvent utiliser la pile TCP / IP. J'ai même essayé d'un administrateur à un autre et cela échoue.



0
votes

Exécuter le moniteur de processus et voir s'il ne veut pas trouver une clé de fichier ou de registre. Peut-être que le profil de l'utilisateur impersonné n'est pas chargé et Winsock (ou un fournisseur de services qu'il tente de charger) est à la recherche de quelque chose.


0 commentaires

1
votes

Peut-être que vous manquez de privilèges requis pour exécuter le processus comme un autre utilisateur. Essayez d'obtenir la poignée sur le jeton d'accès par un appel à OpenProcessToken et d'ajouter Se_Impsonate_name par un appel à ajustement desprivilsges, puis appelez CreateProcessasserw. Je n'ai pas essayé cela moi-même cependant. de
extrait de code dans Python pour faire quelque chose de similaire avec des appels Win32


2 commentaires

Même lorsque j'exécute le processus sous forme d'administrateur Régltokenprivs, retour Error_access_denied.


Bonjour @ 0xDky. Au début, je reçois aussi le wsaeproviderfailedinit 10106 lorsque l'appel socket () . Et après que j'ai fait ce que vous avez dit, je reçois wsasyscallfailure 10107 lorsque l'appel wsastartup () , qui ne renvoie pas l'erreur au début. Avez-vous une idée? Merci.



3
votes

Vous devez avoir l'acte comme Priv Priv


1 commentaires

Bonjour Tarquinini. Puis-je vous demander comment obtenir le privilège de l'opération spécifiquement?



0
votes

Commencez toujours winsock près du sommet de la main et laissez-le courir. La nécessité de démarrer Winsock est un accident de l'architecture et n'est plus germain à aucun domaine problématique.


0 commentaires

8
votes

J'ai rencontré exactement le même problème et il était dû à l'environnement (!): apparemment Winsock s'attend à une variable d'environnement Systemroot valide à définir. Dans mon cas, j'appelle CreateProcess () en spécifiant une seule variable d'environnement spécifique à mon application (sans hériter de l'environnement de l'appelant), et c'était échoué.

Vérifiez que vous avez créé votre processus en passant par null à lpenvironment pour hériter de l'environnement de l'appelant ou spécifiez une variable d'environnement valide .

complètement sans papiers afaik, mais cela a fonctionné pour moi.


0 commentaires