Sécurité et composants COM avec VBS / WSH /WMI: besoin d'aide
2 réponses
Yael Cheenne
Bonjour à toutes et à tous,
1) - Je rencontre un petit problème en VBS et je ne trouve pas de
solutions. Contexte : sous Windows XP (non connecté à un réseau
quelconque), je crée un utilisateur:
strComputer = "PCindus"
Set ListAccounts = GetObject("WinNT://" & strComputer & "")
Set objUser = ListAccounts.Create("user", "OperChim2")
objUser.SetPassword "09iu%4et"
objUser.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le compte est
correctement créé. Je crée ensuite le groupe dans lequel le compte
utilisateur doit être intégré:
strComputer = "PCindus"
Set ListGroups = GetObject("WinNT://" & strComputer & "")
Set objGroup = ListGroups.Create("group", "Chimie")
objGroup.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le groupe est
correctement créé
2) - Mais après je n'ai pas trouvé de soultion pour intégrer le compte
utilisateur au groupe. On trouve plein d'exemple pour Active
Directory, mais rien de simple quand on n'est pas connecté au réseau
ou en local
3) - Comment, lors de la création du compte ou du groupe, indiquer la
description, la désactivation du compte, l'expiration ou non du mot de
passe, en résumé les caractéristiques du compte ou du groupe ?
Brasse coulée façon "fer à repasser":
Pour mieux comprendre le contexte, je vais le décrire ci-dessous:
Une application industrielle "SCW", développée en langages Java et C++
est mise à disposition du client, sur un PC Windows XP SP2, via un
émulateur Unix propriétaire (MKS-SCO). Cet émulateur est installé sous
Windows XP SP2.
L'émulateur "NUCR" nécessite de démarrer avec un compte
d'authentification de service "Local System". Cet émulateur, une fois
lancé, lance une autre application "GhostD" (qui n'est rien d'autre
qu'un processus), donc il y a dépendance. Ce "GhostD" démarre lui
aussi avec un compte d'authentification de service "Local System".
Une fois ce "GhostD" lancé, il autorise un autre processus chargé
d'initialiser une application Java RMI (Remote Method Invocation),
contrôleé par l'émulateur.
La demande du client: remplacer les comptes "Local System" par des
comptes de services créés spécialement avec les droits strictement
nécessaires pour démarrer les applications et les processus.
4) - J'ai besoin de créer un compte de service pour démarrer une
application. Ce compte s'appelle "NUCR", mot de passe "xxxxxx" et doit
être intégré à un groupe local appelé "PCSERVICES". Ce compte ou son
groupe doit recevoir le droit "d'ouvrir une session en tant que
service". Comment fait-ton en VBS ?
5) - Comme ce compte se trouve dans la base SAM locale de
l'ordinateur, existe-t-il un moyen d'empêcher une ouverture de session
locale avec ce compte, sans enrayer le fonctionnnement de l'ouverture
de session en tant que service ?
--------------------------------------------------------------------------------------------------------------
En phase manuelle, cette application, à priori, nécessite d'utiliser
un compte de service authentifié avec le compte "Local System". Or
pour des raisons de sécurité imposées, il faut que l'application
démarre avec un compte de service non "Local System".
Si je le configure avec un compte enrichi de droits "Ouvrir une
session en tant que service", cela ne fonctionne pas. Si je rajoute ce
compte de service dans le groupe "Administrateurs" local de
l'ordinateur, alors l'application démarre. Conclusion: les droits
"Ouvrir une session en tant que service" ne sont pas suffisants et
l'ajout des droits "Administrateurs" provoquent le démarrage.
Constatations:
Tous les processus de ces applications démarrant avec le compte de
service "Local System" fonctionnent correctement et ils sont tous
visibles dans l'onglet "Processus" du "Gestionnaire de Tâches",
marqués comme "Démarré /Automatique" dans les services et accessible
via une console "Xterm" de l'émulateur par un "ps -aex | grep nomdu
processus"
Si l'on modifie le démarrage de l'application "NUCR" avec un compte de
service (qui a reçu les droits "Ouvrir une session en tant que
service"), l'application démarre, mais l'application dépendante
"GhostD" ne démarre pas (bien qu'il soit avec le compte "Local
System". Les autres applications, basculées avec ce même compte, sont
démarrées, apparaissent comme "Démarré / Automatique" au niveau des
services, mais invisibles dans le "Gestionnaire des tâches" et pas
plus dans la "XTerm".
Si je change le compte de service "Local System" de "GhostD" par le
nouveau compte de service. Ce dernier ne démarre pas, n'apparait pas
dans le "Gestionnaire de Tâches", ni dans le "Xterm". Le RMI ne
démarre pas non plus. Ce qui signifie que le nouveau compte de
service créé avec les droits "Ouvrir une session en tant que service"
n'a pas suffisamment de "droits".
6) - Question: quel est le détail de "Ouvrir une session en tant que
service" et est-il possible de connaitre de quoi sont constitués les
droits "Administrateurs" et ceux de "Local System" afin de, par
tatonnement, de ne mettre que ce qui est nécessaire pour faire
démarrer ce service ?
Comment peut-on avoir ce genre d'informations, via script VBS / WMI ou
fait-il passer par un langage plus évolué type C++ ?
7) - Comment par script, accéder à n'importe quel composant COM
Windows, pour déterminer les propriétés, les méthodes possibles ?
Où trouver une documentation COMPLETE de tous ces composants COM ?
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Michel Pierron
Bonjour Yael; Peut être ainsi:
' Création utilisateur strComputer = "PCindus" Set ListAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = ListAccounts.Create("user", "OperChim2") objUser.Put "Description", "Ici, la description de l'utilisateur" objUser.SetPassword "09iu%4et" ' Force changement MDP à la première connexion objUser.Put "pwdLastSet", 0 ' Active le compte objUser.AccountDisabled = False objUser.SetInfo
1) - Je rencontre un petit problème en VBS et je ne trouve pas de solutions. Contexte : sous Windows XP (non connecté à un réseau quelconque), je crée un utilisateur:
strComputer = "PCindus" Set ListAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = ListAccounts.Create("user", "OperChim2") objUser.SetPassword "09iu%4et" objUser.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le compte est correctement créé. Je crée ensuite le groupe dans lequel le compte utilisateur doit être intégré:
strComputer = "PCindus" Set ListGroups = GetObject("WinNT://" & strComputer & "") Set objGroup = ListGroups.Create("group", "Chimie") objGroup.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le groupe est correctement créé
2) - Mais après je n'ai pas trouvé de soultion pour intégrer le compte utilisateur au groupe. On trouve plein d'exemple pour Active Directory, mais rien de simple quand on n'est pas connecté au réseau ou en local
3) - Comment, lors de la création du compte ou du groupe, indiquer la description, la désactivation du compte, l'expiration ou non du mot de passe, en résumé les caractéristiques du compte ou du groupe ?
Brasse coulée façon "fer à repasser":
Pour mieux comprendre le contexte, je vais le décrire ci-dessous:
Une application industrielle "SCW", développée en langages Java et C++ est mise à disposition du client, sur un PC Windows XP SP2, via un émulateur Unix propriétaire (MKS-SCO). Cet émulateur est installé sous Windows XP SP2.
L'émulateur "NUCR" nécessite de démarrer avec un compte d'authentification de service "Local System". Cet émulateur, une fois lancé, lance une autre application "GhostD" (qui n'est rien d'autre qu'un processus), donc il y a dépendance. Ce "GhostD" démarre lui aussi avec un compte d'authentification de service "Local System".
Une fois ce "GhostD" lancé, il autorise un autre processus chargé d'initialiser une application Java RMI (Remote Method Invocation), contrôleé par l'émulateur.
La demande du client: remplacer les comptes "Local System" par des comptes de services créés spécialement avec les droits strictement nécessaires pour démarrer les applications et les processus.
4) - J'ai besoin de créer un compte de service pour démarrer une application. Ce compte s'appelle "NUCR", mot de passe "xxxxxx" et doit être intégré à un groupe local appelé "PCSERVICES". Ce compte ou son groupe doit recevoir le droit "d'ouvrir une session en tant que service". Comment fait-ton en VBS ?
5) - Comme ce compte se trouve dans la base SAM locale de l'ordinateur, existe-t-il un moyen d'empêcher une ouverture de session locale avec ce compte, sans enrayer le fonctionnnement de l'ouverture de session en tant que service ?
-------------------------------------------------------------------------------------------------------------- En phase manuelle, cette application, à priori, nécessite d'utiliser un compte de service authentifié avec le compte "Local System". Or pour des raisons de sécurité imposées, il faut que l'application démarre avec un compte de service non "Local System".
Si je le configure avec un compte enrichi de droits "Ouvrir une session en tant que service", cela ne fonctionne pas. Si je rajoute ce compte de service dans le groupe "Administrateurs" local de l'ordinateur, alors l'application démarre. Conclusion: les droits "Ouvrir une session en tant que service" ne sont pas suffisants et l'ajout des droits "Administrateurs" provoquent le démarrage.
Constatations:
Tous les processus de ces applications démarrant avec le compte de service "Local System" fonctionnent correctement et ils sont tous visibles dans l'onglet "Processus" du "Gestionnaire de Tâches", marqués comme "Démarré /Automatique" dans les services et accessible via une console "Xterm" de l'émulateur par un "ps -aex | grep nomdu processus"
Si l'on modifie le démarrage de l'application "NUCR" avec un compte de service (qui a reçu les droits "Ouvrir une session en tant que service"), l'application démarre, mais l'application dépendante "GhostD" ne démarre pas (bien qu'il soit avec le compte "Local System". Les autres applications, basculées avec ce même compte, sont démarrées, apparaissent comme "Démarré / Automatique" au niveau des services, mais invisibles dans le "Gestionnaire des tâches" et pas plus dans la "XTerm".
Si je change le compte de service "Local System" de "GhostD" par le nouveau compte de service. Ce dernier ne démarre pas, n'apparait pas dans le "Gestionnaire de Tâches", ni dans le "Xterm". Le RMI ne démarre pas non plus. Ce qui signifie que le nouveau compte de service créé avec les droits "Ouvrir une session en tant que service" n'a pas suffisamment de "droits".
6) - Question: quel est le détail de "Ouvrir une session en tant que service" et est-il possible de connaitre de quoi sont constitués les droits "Administrateurs" et ceux de "Local System" afin de, par tatonnement, de ne mettre que ce qui est nécessaire pour faire démarrer ce service ?
Comment peut-on avoir ce genre d'informations, via script VBS / WMI ou fait-il passer par un langage plus évolué type C++ ?
7) - Comment par script, accéder à n'importe quel composant COM Windows, pour déterminer les propriétés, les méthodes possibles ?
Où trouver une documentation COMPLETE de tous ces composants COM ?
Merci pour votre aide. Cordialement, Houdini
Bonjour Yael;
Peut être ainsi:
' Création utilisateur
strComputer = "PCindus"
Set ListAccounts = GetObject("WinNT://" & strComputer & "")
Set objUser = ListAccounts.Create("user", "OperChim2")
objUser.Put "Description", "Ici, la description de l'utilisateur"
objUser.SetPassword "09iu%4et"
' Force changement MDP à la première connexion
objUser.Put "pwdLastSet", 0
' Active le compte
objUser.AccountDisabled = False
objUser.SetInfo
"Yael Cheenne" <yael.cheenne@wanadoo.fr> a écrit dans le message de news:
n096d25nqim2s49r7v49ctaopfh51hj8a2@4ax.com...
Bonjour à toutes et à tous,
1) - Je rencontre un petit problème en VBS et je ne trouve pas de
solutions. Contexte : sous Windows XP (non connecté à un réseau
quelconque), je crée un utilisateur:
strComputer = "PCindus"
Set ListAccounts = GetObject("WinNT://" & strComputer & "")
Set objUser = ListAccounts.Create("user", "OperChim2")
objUser.SetPassword "09iu%4et"
objUser.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le compte est
correctement créé. Je crée ensuite le groupe dans lequel le compte
utilisateur doit être intégré:
strComputer = "PCindus"
Set ListGroups = GetObject("WinNT://" & strComputer & "")
Set objGroup = ListGroups.Create("group", "Chimie")
objGroup.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le groupe est
correctement créé
2) - Mais après je n'ai pas trouvé de soultion pour intégrer le compte
utilisateur au groupe. On trouve plein d'exemple pour Active
Directory, mais rien de simple quand on n'est pas connecté au réseau
ou en local
3) - Comment, lors de la création du compte ou du groupe, indiquer la
description, la désactivation du compte, l'expiration ou non du mot de
passe, en résumé les caractéristiques du compte ou du groupe ?
Brasse coulée façon "fer à repasser":
Pour mieux comprendre le contexte, je vais le décrire ci-dessous:
Une application industrielle "SCW", développée en langages Java et C++
est mise à disposition du client, sur un PC Windows XP SP2, via un
émulateur Unix propriétaire (MKS-SCO). Cet émulateur est installé sous
Windows XP SP2.
L'émulateur "NUCR" nécessite de démarrer avec un compte
d'authentification de service "Local System". Cet émulateur, une fois
lancé, lance une autre application "GhostD" (qui n'est rien d'autre
qu'un processus), donc il y a dépendance. Ce "GhostD" démarre lui
aussi avec un compte d'authentification de service "Local System".
Une fois ce "GhostD" lancé, il autorise un autre processus chargé
d'initialiser une application Java RMI (Remote Method Invocation),
contrôleé par l'émulateur.
La demande du client: remplacer les comptes "Local System" par des
comptes de services créés spécialement avec les droits strictement
nécessaires pour démarrer les applications et les processus.
4) - J'ai besoin de créer un compte de service pour démarrer une
application. Ce compte s'appelle "NUCR", mot de passe "xxxxxx" et doit
être intégré à un groupe local appelé "PCSERVICES". Ce compte ou son
groupe doit recevoir le droit "d'ouvrir une session en tant que
service". Comment fait-ton en VBS ?
5) - Comme ce compte se trouve dans la base SAM locale de
l'ordinateur, existe-t-il un moyen d'empêcher une ouverture de session
locale avec ce compte, sans enrayer le fonctionnnement de l'ouverture
de session en tant que service ?
--------------------------------------------------------------------------------------------------------------
En phase manuelle, cette application, à priori, nécessite d'utiliser
un compte de service authentifié avec le compte "Local System". Or
pour des raisons de sécurité imposées, il faut que l'application
démarre avec un compte de service non "Local System".
Si je le configure avec un compte enrichi de droits "Ouvrir une
session en tant que service", cela ne fonctionne pas. Si je rajoute ce
compte de service dans le groupe "Administrateurs" local de
l'ordinateur, alors l'application démarre. Conclusion: les droits
"Ouvrir une session en tant que service" ne sont pas suffisants et
l'ajout des droits "Administrateurs" provoquent le démarrage.
Constatations:
Tous les processus de ces applications démarrant avec le compte de
service "Local System" fonctionnent correctement et ils sont tous
visibles dans l'onglet "Processus" du "Gestionnaire de Tâches",
marqués comme "Démarré /Automatique" dans les services et accessible
via une console "Xterm" de l'émulateur par un "ps -aex | grep nomdu
processus"
Si l'on modifie le démarrage de l'application "NUCR" avec un compte de
service (qui a reçu les droits "Ouvrir une session en tant que
service"), l'application démarre, mais l'application dépendante
"GhostD" ne démarre pas (bien qu'il soit avec le compte "Local
System". Les autres applications, basculées avec ce même compte, sont
démarrées, apparaissent comme "Démarré / Automatique" au niveau des
services, mais invisibles dans le "Gestionnaire des tâches" et pas
plus dans la "XTerm".
Si je change le compte de service "Local System" de "GhostD" par le
nouveau compte de service. Ce dernier ne démarre pas, n'apparait pas
dans le "Gestionnaire de Tâches", ni dans le "Xterm". Le RMI ne
démarre pas non plus. Ce qui signifie que le nouveau compte de
service créé avec les droits "Ouvrir une session en tant que service"
n'a pas suffisamment de "droits".
6) - Question: quel est le détail de "Ouvrir une session en tant que
service" et est-il possible de connaitre de quoi sont constitués les
droits "Administrateurs" et ceux de "Local System" afin de, par
tatonnement, de ne mettre que ce qui est nécessaire pour faire
démarrer ce service ?
Comment peut-on avoir ce genre d'informations, via script VBS / WMI ou
fait-il passer par un langage plus évolué type C++ ?
7) - Comment par script, accéder à n'importe quel composant COM
Windows, pour déterminer les propriétés, les méthodes possibles ?
Où trouver une documentation COMPLETE de tous ces composants COM ?
' Création utilisateur strComputer = "PCindus" Set ListAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = ListAccounts.Create("user", "OperChim2") objUser.Put "Description", "Ici, la description de l'utilisateur" objUser.SetPassword "09iu%4et" ' Force changement MDP à la première connexion objUser.Put "pwdLastSet", 0 ' Active le compte objUser.AccountDisabled = False objUser.SetInfo
1) - Je rencontre un petit problème en VBS et je ne trouve pas de solutions. Contexte : sous Windows XP (non connecté à un réseau quelconque), je crée un utilisateur:
strComputer = "PCindus" Set ListAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = ListAccounts.Create("user", "OperChim2") objUser.SetPassword "09iu%4et" objUser.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le compte est correctement créé. Je crée ensuite le groupe dans lequel le compte utilisateur doit être intégré:
strComputer = "PCindus" Set ListGroups = GetObject("WinNT://" & strComputer & "") Set objGroup = ListGroups.Create("group", "Chimie") objGroup.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le groupe est correctement créé
2) - Mais après je n'ai pas trouvé de soultion pour intégrer le compte utilisateur au groupe. On trouve plein d'exemple pour Active Directory, mais rien de simple quand on n'est pas connecté au réseau ou en local
3) - Comment, lors de la création du compte ou du groupe, indiquer la description, la désactivation du compte, l'expiration ou non du mot de passe, en résumé les caractéristiques du compte ou du groupe ?
Brasse coulée façon "fer à repasser":
Pour mieux comprendre le contexte, je vais le décrire ci-dessous:
Une application industrielle "SCW", développée en langages Java et C++ est mise à disposition du client, sur un PC Windows XP SP2, via un émulateur Unix propriétaire (MKS-SCO). Cet émulateur est installé sous Windows XP SP2.
L'émulateur "NUCR" nécessite de démarrer avec un compte d'authentification de service "Local System". Cet émulateur, une fois lancé, lance une autre application "GhostD" (qui n'est rien d'autre qu'un processus), donc il y a dépendance. Ce "GhostD" démarre lui aussi avec un compte d'authentification de service "Local System".
Une fois ce "GhostD" lancé, il autorise un autre processus chargé d'initialiser une application Java RMI (Remote Method Invocation), contrôleé par l'émulateur.
La demande du client: remplacer les comptes "Local System" par des comptes de services créés spécialement avec les droits strictement nécessaires pour démarrer les applications et les processus.
4) - J'ai besoin de créer un compte de service pour démarrer une application. Ce compte s'appelle "NUCR", mot de passe "xxxxxx" et doit être intégré à un groupe local appelé "PCSERVICES". Ce compte ou son groupe doit recevoir le droit "d'ouvrir une session en tant que service". Comment fait-ton en VBS ?
5) - Comme ce compte se trouve dans la base SAM locale de l'ordinateur, existe-t-il un moyen d'empêcher une ouverture de session locale avec ce compte, sans enrayer le fonctionnnement de l'ouverture de session en tant que service ?
-------------------------------------------------------------------------------------------------------------- En phase manuelle, cette application, à priori, nécessite d'utiliser un compte de service authentifié avec le compte "Local System". Or pour des raisons de sécurité imposées, il faut que l'application démarre avec un compte de service non "Local System".
Si je le configure avec un compte enrichi de droits "Ouvrir une session en tant que service", cela ne fonctionne pas. Si je rajoute ce compte de service dans le groupe "Administrateurs" local de l'ordinateur, alors l'application démarre. Conclusion: les droits "Ouvrir une session en tant que service" ne sont pas suffisants et l'ajout des droits "Administrateurs" provoquent le démarrage.
Constatations:
Tous les processus de ces applications démarrant avec le compte de service "Local System" fonctionnent correctement et ils sont tous visibles dans l'onglet "Processus" du "Gestionnaire de Tâches", marqués comme "Démarré /Automatique" dans les services et accessible via une console "Xterm" de l'émulateur par un "ps -aex | grep nomdu processus"
Si l'on modifie le démarrage de l'application "NUCR" avec un compte de service (qui a reçu les droits "Ouvrir une session en tant que service"), l'application démarre, mais l'application dépendante "GhostD" ne démarre pas (bien qu'il soit avec le compte "Local System". Les autres applications, basculées avec ce même compte, sont démarrées, apparaissent comme "Démarré / Automatique" au niveau des services, mais invisibles dans le "Gestionnaire des tâches" et pas plus dans la "XTerm".
Si je change le compte de service "Local System" de "GhostD" par le nouveau compte de service. Ce dernier ne démarre pas, n'apparait pas dans le "Gestionnaire de Tâches", ni dans le "Xterm". Le RMI ne démarre pas non plus. Ce qui signifie que le nouveau compte de service créé avec les droits "Ouvrir une session en tant que service" n'a pas suffisamment de "droits".
6) - Question: quel est le détail de "Ouvrir une session en tant que service" et est-il possible de connaitre de quoi sont constitués les droits "Administrateurs" et ceux de "Local System" afin de, par tatonnement, de ne mettre que ce qui est nécessaire pour faire démarrer ce service ?
Comment peut-on avoir ce genre d'informations, via script VBS / WMI ou fait-il passer par un langage plus évolué type C++ ?
7) - Comment par script, accéder à n'importe quel composant COM Windows, pour déterminer les propriétés, les méthodes possibles ?
Où trouver une documentation COMPLETE de tous ces composants COM ?
Merci pour votre aide. Cordialement, Houdini
GOWAP
Très bien ! GOWAP
"Michel Pierron" a écrit dans le message de news:
Bonjour Yael; Peut être ainsi:
' Création utilisateur strComputer = "PCindus" Set ListAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = ListAccounts.Create("user", "OperChim2") objUser.Put "Description", "Ici, la description de l'utilisateur" objUser.SetPassword "09iu%4et" ' Force changement MDP à la première connexion objUser.Put "pwdLastSet", 0 ' Active le compte objUser.AccountDisabled = False objUser.SetInfo
1) - Je rencontre un petit problème en VBS et je ne trouve pas de solutions. Contexte : sous Windows XP (non connecté à un réseau quelconque), je crée un utilisateur:
strComputer = "PCindus" Set ListAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = ListAccounts.Create("user", "OperChim2") objUser.SetPassword "09iu%4et" objUser.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le compte est correctement créé. Je crée ensuite le groupe dans lequel le compte utilisateur doit être intégré:
strComputer = "PCindus" Set ListGroups = GetObject("WinNT://" & strComputer & "") Set objGroup = ListGroups.Create("group", "Chimie") objGroup.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le groupe est correctement créé
2) - Mais après je n'ai pas trouvé de soultion pour intégrer le compte utilisateur au groupe. On trouve plein d'exemple pour Active Directory, mais rien de simple quand on n'est pas connecté au réseau ou en local
3) - Comment, lors de la création du compte ou du groupe, indiquer la description, la désactivation du compte, l'expiration ou non du mot de passe, en résumé les caractéristiques du compte ou du groupe ?
Brasse coulée façon "fer à repasser":
Pour mieux comprendre le contexte, je vais le décrire ci-dessous:
Une application industrielle "SCW", développée en langages Java et C++ est mise à disposition du client, sur un PC Windows XP SP2, via un émulateur Unix propriétaire (MKS-SCO). Cet émulateur est installé sous Windows XP SP2.
L'émulateur "NUCR" nécessite de démarrer avec un compte d'authentification de service "Local System". Cet émulateur, une fois lancé, lance une autre application "GhostD" (qui n'est rien d'autre qu'un processus), donc il y a dépendance. Ce "GhostD" démarre lui aussi avec un compte d'authentification de service "Local System".
Une fois ce "GhostD" lancé, il autorise un autre processus chargé d'initialiser une application Java RMI (Remote Method Invocation), contrôleé par l'émulateur.
La demande du client: remplacer les comptes "Local System" par des comptes de services créés spécialement avec les droits strictement nécessaires pour démarrer les applications et les processus.
4) - J'ai besoin de créer un compte de service pour démarrer une application. Ce compte s'appelle "NUCR", mot de passe "xxxxxx" et doit être intégré à un groupe local appelé "PCSERVICES". Ce compte ou son groupe doit recevoir le droit "d'ouvrir une session en tant que service". Comment fait-ton en VBS ?
5) - Comme ce compte se trouve dans la base SAM locale de l'ordinateur, existe-t-il un moyen d'empêcher une ouverture de session locale avec ce compte, sans enrayer le fonctionnnement de l'ouverture de session en tant que service ?
-------------------------------------------------------------------------------------------------------------- En phase manuelle, cette application, à priori, nécessite d'utiliser un compte de service authentifié avec le compte "Local System". Or pour des raisons de sécurité imposées, il faut que l'application démarre avec un compte de service non "Local System".
Si je le configure avec un compte enrichi de droits "Ouvrir une session en tant que service", cela ne fonctionne pas. Si je rajoute ce compte de service dans le groupe "Administrateurs" local de l'ordinateur, alors l'application démarre. Conclusion: les droits "Ouvrir une session en tant que service" ne sont pas suffisants et l'ajout des droits "Administrateurs" provoquent le démarrage.
Constatations:
Tous les processus de ces applications démarrant avec le compte de service "Local System" fonctionnent correctement et ils sont tous visibles dans l'onglet "Processus" du "Gestionnaire de Tâches", marqués comme "Démarré /Automatique" dans les services et accessible via une console "Xterm" de l'émulateur par un "ps -aex | grep nomdu processus"
Si l'on modifie le démarrage de l'application "NUCR" avec un compte de service (qui a reçu les droits "Ouvrir une session en tant que service"), l'application démarre, mais l'application dépendante "GhostD" ne démarre pas (bien qu'il soit avec le compte "Local System". Les autres applications, basculées avec ce même compte, sont démarrées, apparaissent comme "Démarré / Automatique" au niveau des services, mais invisibles dans le "Gestionnaire des tâches" et pas plus dans la "XTerm".
Si je change le compte de service "Local System" de "GhostD" par le nouveau compte de service. Ce dernier ne démarre pas, n'apparait pas dans le "Gestionnaire de Tâches", ni dans le "Xterm". Le RMI ne démarre pas non plus. Ce qui signifie que le nouveau compte de service créé avec les droits "Ouvrir une session en tant que service" n'a pas suffisamment de "droits".
6) - Question: quel est le détail de "Ouvrir une session en tant que service" et est-il possible de connaitre de quoi sont constitués les droits "Administrateurs" et ceux de "Local System" afin de, par tatonnement, de ne mettre que ce qui est nécessaire pour faire démarrer ce service ?
Comment peut-on avoir ce genre d'informations, via script VBS / WMI ou fait-il passer par un langage plus évolué type C++ ?
7) - Comment par script, accéder à n'importe quel composant COM Windows, pour déterminer les propriétés, les méthodes possibles ?
Où trouver une documentation COMPLETE de tous ces composants COM ?
Merci pour votre aide. Cordialement, Houdini
Très bien !
GOWAP
"Michel Pierron" <michel.pierron@free.fr> a écrit dans le message de news:
Oo08IXUuGHA.5076@TK2MSFTNGP04.phx.gbl...
Bonjour Yael;
Peut être ainsi:
' Création utilisateur
strComputer = "PCindus"
Set ListAccounts = GetObject("WinNT://" & strComputer & "")
Set objUser = ListAccounts.Create("user", "OperChim2")
objUser.Put "Description", "Ici, la description de l'utilisateur"
objUser.SetPassword "09iu%4et"
' Force changement MDP à la première connexion
objUser.Put "pwdLastSet", 0
' Active le compte
objUser.AccountDisabled = False
objUser.SetInfo
"Yael Cheenne" <yael.cheenne@wanadoo.fr> a écrit dans le message de news:
n096d25nqim2s49r7v49ctaopfh51hj8a2@4ax.com...
Bonjour à toutes et à tous,
1) - Je rencontre un petit problème en VBS et je ne trouve pas de
solutions. Contexte : sous Windows XP (non connecté à un réseau
quelconque), je crée un utilisateur:
strComputer = "PCindus"
Set ListAccounts = GetObject("WinNT://" & strComputer & "")
Set objUser = ListAccounts.Create("user", "OperChim2")
objUser.SetPassword "09iu%4et"
objUser.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le compte est
correctement créé. Je crée ensuite le groupe dans lequel le compte
utilisateur doit être intégré:
strComputer = "PCindus"
Set ListGroups = GetObject("WinNT://" & strComputer & "")
Set objGroup = ListGroups.Create("group", "Chimie")
objGroup.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le groupe est
correctement créé
2) - Mais après je n'ai pas trouvé de soultion pour intégrer le compte
utilisateur au groupe. On trouve plein d'exemple pour Active
Directory, mais rien de simple quand on n'est pas connecté au réseau
ou en local
3) - Comment, lors de la création du compte ou du groupe, indiquer la
description, la désactivation du compte, l'expiration ou non du mot de
passe, en résumé les caractéristiques du compte ou du groupe ?
Brasse coulée façon "fer à repasser":
Pour mieux comprendre le contexte, je vais le décrire ci-dessous:
Une application industrielle "SCW", développée en langages Java et C++
est mise à disposition du client, sur un PC Windows XP SP2, via un
émulateur Unix propriétaire (MKS-SCO). Cet émulateur est installé sous
Windows XP SP2.
L'émulateur "NUCR" nécessite de démarrer avec un compte
d'authentification de service "Local System". Cet émulateur, une fois
lancé, lance une autre application "GhostD" (qui n'est rien d'autre
qu'un processus), donc il y a dépendance. Ce "GhostD" démarre lui
aussi avec un compte d'authentification de service "Local System".
Une fois ce "GhostD" lancé, il autorise un autre processus chargé
d'initialiser une application Java RMI (Remote Method Invocation),
contrôleé par l'émulateur.
La demande du client: remplacer les comptes "Local System" par des
comptes de services créés spécialement avec les droits strictement
nécessaires pour démarrer les applications et les processus.
4) - J'ai besoin de créer un compte de service pour démarrer une
application. Ce compte s'appelle "NUCR", mot de passe "xxxxxx" et doit
être intégré à un groupe local appelé "PCSERVICES". Ce compte ou son
groupe doit recevoir le droit "d'ouvrir une session en tant que
service". Comment fait-ton en VBS ?
5) - Comme ce compte se trouve dans la base SAM locale de
l'ordinateur, existe-t-il un moyen d'empêcher une ouverture de session
locale avec ce compte, sans enrayer le fonctionnnement de l'ouverture
de session en tant que service ?
--------------------------------------------------------------------------------------------------------------
En phase manuelle, cette application, à priori, nécessite d'utiliser
un compte de service authentifié avec le compte "Local System". Or
pour des raisons de sécurité imposées, il faut que l'application
démarre avec un compte de service non "Local System".
Si je le configure avec un compte enrichi de droits "Ouvrir une
session en tant que service", cela ne fonctionne pas. Si je rajoute ce
compte de service dans le groupe "Administrateurs" local de
l'ordinateur, alors l'application démarre. Conclusion: les droits
"Ouvrir une session en tant que service" ne sont pas suffisants et
l'ajout des droits "Administrateurs" provoquent le démarrage.
Constatations:
Tous les processus de ces applications démarrant avec le compte de
service "Local System" fonctionnent correctement et ils sont tous
visibles dans l'onglet "Processus" du "Gestionnaire de Tâches",
marqués comme "Démarré /Automatique" dans les services et accessible
via une console "Xterm" de l'émulateur par un "ps -aex | grep nomdu
processus"
Si l'on modifie le démarrage de l'application "NUCR" avec un compte de
service (qui a reçu les droits "Ouvrir une session en tant que
service"), l'application démarre, mais l'application dépendante
"GhostD" ne démarre pas (bien qu'il soit avec le compte "Local
System". Les autres applications, basculées avec ce même compte, sont
démarrées, apparaissent comme "Démarré / Automatique" au niveau des
services, mais invisibles dans le "Gestionnaire des tâches" et pas
plus dans la "XTerm".
Si je change le compte de service "Local System" de "GhostD" par le
nouveau compte de service. Ce dernier ne démarre pas, n'apparait pas
dans le "Gestionnaire de Tâches", ni dans le "Xterm". Le RMI ne
démarre pas non plus. Ce qui signifie que le nouveau compte de
service créé avec les droits "Ouvrir une session en tant que service"
n'a pas suffisamment de "droits".
6) - Question: quel est le détail de "Ouvrir une session en tant que
service" et est-il possible de connaitre de quoi sont constitués les
droits "Administrateurs" et ceux de "Local System" afin de, par
tatonnement, de ne mettre que ce qui est nécessaire pour faire
démarrer ce service ?
Comment peut-on avoir ce genre d'informations, via script VBS / WMI ou
fait-il passer par un langage plus évolué type C++ ?
7) - Comment par script, accéder à n'importe quel composant COM
Windows, pour déterminer les propriétés, les méthodes possibles ?
Où trouver une documentation COMPLETE de tous ces composants COM ?
' Création utilisateur strComputer = "PCindus" Set ListAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = ListAccounts.Create("user", "OperChim2") objUser.Put "Description", "Ici, la description de l'utilisateur" objUser.SetPassword "09iu%4et" ' Force changement MDP à la première connexion objUser.Put "pwdLastSet", 0 ' Active le compte objUser.AccountDisabled = False objUser.SetInfo
1) - Je rencontre un petit problème en VBS et je ne trouve pas de solutions. Contexte : sous Windows XP (non connecté à un réseau quelconque), je crée un utilisateur:
strComputer = "PCindus" Set ListAccounts = GetObject("WinNT://" & strComputer & "") Set objUser = ListAccounts.Create("user", "OperChim2") objUser.SetPassword "09iu%4et" objUser.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le compte est correctement créé. Je crée ensuite le groupe dans lequel le compte utilisateur doit être intégré:
strComputer = "PCindus" Set ListGroups = GetObject("WinNT://" & strComputer & "") Set objGroup = ListGroups.Create("group", "Chimie") objGroup.SetInfo
Execution OK et vérification dans "Lusrmrg.msc" - le groupe est correctement créé
2) - Mais après je n'ai pas trouvé de soultion pour intégrer le compte utilisateur au groupe. On trouve plein d'exemple pour Active Directory, mais rien de simple quand on n'est pas connecté au réseau ou en local
3) - Comment, lors de la création du compte ou du groupe, indiquer la description, la désactivation du compte, l'expiration ou non du mot de passe, en résumé les caractéristiques du compte ou du groupe ?
Brasse coulée façon "fer à repasser":
Pour mieux comprendre le contexte, je vais le décrire ci-dessous:
Une application industrielle "SCW", développée en langages Java et C++ est mise à disposition du client, sur un PC Windows XP SP2, via un émulateur Unix propriétaire (MKS-SCO). Cet émulateur est installé sous Windows XP SP2.
L'émulateur "NUCR" nécessite de démarrer avec un compte d'authentification de service "Local System". Cet émulateur, une fois lancé, lance une autre application "GhostD" (qui n'est rien d'autre qu'un processus), donc il y a dépendance. Ce "GhostD" démarre lui aussi avec un compte d'authentification de service "Local System".
Une fois ce "GhostD" lancé, il autorise un autre processus chargé d'initialiser une application Java RMI (Remote Method Invocation), contrôleé par l'émulateur.
La demande du client: remplacer les comptes "Local System" par des comptes de services créés spécialement avec les droits strictement nécessaires pour démarrer les applications et les processus.
4) - J'ai besoin de créer un compte de service pour démarrer une application. Ce compte s'appelle "NUCR", mot de passe "xxxxxx" et doit être intégré à un groupe local appelé "PCSERVICES". Ce compte ou son groupe doit recevoir le droit "d'ouvrir une session en tant que service". Comment fait-ton en VBS ?
5) - Comme ce compte se trouve dans la base SAM locale de l'ordinateur, existe-t-il un moyen d'empêcher une ouverture de session locale avec ce compte, sans enrayer le fonctionnnement de l'ouverture de session en tant que service ?
-------------------------------------------------------------------------------------------------------------- En phase manuelle, cette application, à priori, nécessite d'utiliser un compte de service authentifié avec le compte "Local System". Or pour des raisons de sécurité imposées, il faut que l'application démarre avec un compte de service non "Local System".
Si je le configure avec un compte enrichi de droits "Ouvrir une session en tant que service", cela ne fonctionne pas. Si je rajoute ce compte de service dans le groupe "Administrateurs" local de l'ordinateur, alors l'application démarre. Conclusion: les droits "Ouvrir une session en tant que service" ne sont pas suffisants et l'ajout des droits "Administrateurs" provoquent le démarrage.
Constatations:
Tous les processus de ces applications démarrant avec le compte de service "Local System" fonctionnent correctement et ils sont tous visibles dans l'onglet "Processus" du "Gestionnaire de Tâches", marqués comme "Démarré /Automatique" dans les services et accessible via une console "Xterm" de l'émulateur par un "ps -aex | grep nomdu processus"
Si l'on modifie le démarrage de l'application "NUCR" avec un compte de service (qui a reçu les droits "Ouvrir une session en tant que service"), l'application démarre, mais l'application dépendante "GhostD" ne démarre pas (bien qu'il soit avec le compte "Local System". Les autres applications, basculées avec ce même compte, sont démarrées, apparaissent comme "Démarré / Automatique" au niveau des services, mais invisibles dans le "Gestionnaire des tâches" et pas plus dans la "XTerm".
Si je change le compte de service "Local System" de "GhostD" par le nouveau compte de service. Ce dernier ne démarre pas, n'apparait pas dans le "Gestionnaire de Tâches", ni dans le "Xterm". Le RMI ne démarre pas non plus. Ce qui signifie que le nouveau compte de service créé avec les droits "Ouvrir une session en tant que service" n'a pas suffisamment de "droits".
6) - Question: quel est le détail de "Ouvrir une session en tant que service" et est-il possible de connaitre de quoi sont constitués les droits "Administrateurs" et ceux de "Local System" afin de, par tatonnement, de ne mettre que ce qui est nécessaire pour faire démarrer ce service ?
Comment peut-on avoir ce genre d'informations, via script VBS / WMI ou fait-il passer par un langage plus évolué type C++ ?
7) - Comment par script, accéder à n'importe quel composant COM Windows, pour déterminer les propriétés, les méthodes possibles ?
Où trouver une documentation COMPLETE de tous ces composants COM ?