IsNTAdmin en vbs

Le
cc134
Bonjour,

Je cherche à écrire ce bout de code en VBS, mais mes connaissances sont
limitées

Private Declare Function IsNTAdmin Lib "advpack.dll" (ByVal dwReserved
AsLong, ByRef lpdwReserved AsLong) AsLong
Private Sub Form_Load()
Msgbox "Etes vous administrateur de ce poste ? " &
CBool(IsNTAdmin(ByVal 0&, ByVal 0&))
End Sub

Je n'ai pas trouvé comment déclarer et utiliser une API en VbScript.

Cela afin d'afficher un MSGBox à l'utilisateur qui devra installer mon
logiciel (il doit avoir des droits Admin)

Merci.

CC
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
~Jean-Marc~ [MVP]
Le #1204913
Salut cc134,
tu nous disais :
Je cherche à écrire ce bout de code en VBS, mais mes connaissances
sont limitées...

Private Declare Function IsNTAdmin Lib "advpack.dll" (ByVal
dwReserved AsLong, ByRef lpdwReserved AsLong) AsLong
Private Sub Form_Load()
Msgbox "Etes vous administrateur de ce poste ? " &
CBool(IsNTAdmin(ByVal 0&, ByVal 0&))
End Sub

Je n'ai pas trouvé comment déclarer et utiliser une API en VbScript.


Ce n'est pas possible, à mon grand regret, sans add-ons.

Cela afin d'afficher un MSGBox à l'utilisateur qui devra installer mon
logiciel (il doit avoir des droits Admin)


Par contre, tu peux tester si l'utilisateur fait partie du groupe admin par WMI.
(ou simplement en bat :
net user %username%|find /i "administrateurs"
)

@+

--
~Jean-Marc~ MVP Shell/User Fr
( Vista x86 Ultimate )
- http://msmvps.com/blogs/docxp/ -
- http://docxp.mvps.org -

cc134
Le #1205769
Merci,

Ok pour un batch, c'est ce que j'utilise actuellement. Mais l'application
que j'installe affiche un msg lié au fait que l'opérateur ne soit pas un
administrateur.

Mon problème avec ta solution c'est que je ne connais pas le nom du user ni
celui du domaine, je peux avoir des OS français ou anglais... ainsi que NT,
2000 ou XP.

Re merci si tu as une solution.

CC.
"~Jean-Marc~ [MVP]" news:
Salut cc134,
tu nous disais :
Je cherche à écrire ce bout de code en VBS, mais mes connaissances
sont limitées...

Private Declare Function IsNTAdmin Lib "advpack.dll" (ByVal
dwReserved AsLong, ByRef lpdwReserved AsLong) AsLong
Private Sub Form_Load()
Msgbox "Etes vous administrateur de ce poste ? " &
CBool(IsNTAdmin(ByVal 0&, ByVal 0&))
End Sub

Je n'ai pas trouvé comment déclarer et utiliser une API en VbScript.


Ce n'est pas possible, à mon grand regret, sans add-ons.

Cela afin d'afficher un MSGBox à l'utilisateur qui devra installer mon
logiciel (il doit avoir des droits Admin)


Par contre, tu peux tester si l'utilisateur fait partie du groupe admin
par WMI.

(ou simplement en bat :
net user %username%|find /i "administrateurs"
)

@+

--
~Jean-Marc~ MVP Shell/User Fr
( Vista x86 Ultimate )
- http://msmvps.com/blogs/docxp/ -
- http://docxp.mvps.org -




Gilles LAURENT [MVP]
Le #1213687
"cc134" news:fqjg16$jjl$
| Merci,

Bonsoir,

| Ok pour un batch, c'est ce que j'utilise actuellement. Mais
| l'application que j'installe affiche un msg lié au fait que
| l'opérateur ne soit pas un administrateur.

Plusieurs pistes :

1- L'outil de packaging

Ne serait-il pas le rôle de l'installeur (setup) de vérifier si
l'utilisateur courant a les droits nécessaires pour installer votre
application ? Tous les outils de packaging sérieux possèdent cette
fonctionnalité. Je vous invite à jeter un oeil sur les installeurs :
Inno Setup
http://www.jrsoftware.org/isinfo.php

NSIS:
http://nsis.sourceforge.net/Main_Page

2- La détermination des droits

Le test sur la commande "net user" implique que l'utilisateur soit
nominativement membre du groupe local Administrateurs. Cela est rarement
le cas ! En effet les utilisateurs "privilégiés" sont souvent membres de
groupes de domaine intégrés au groupe local (Admins du domaine, via une
stratégie de groupes restreints, de manière intéractive, ...". Toutefois
une solution de contournement consiste à tester les droits de
l'utilisateur sur un dossier du système d'exploitation (ici
%windir%system32). C'est cette solution que je vous propose ici :

--- Coupez ici ---
Function IsNTAdmin
On Error Resume Next
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oSh=CreateObject("WScript.Shell")
sSysPath=oSh.ExpandEnvironmentStrings("%windir%system32")
sTestFile=sSysPath & "IsNTAdmin.log"
oFs.CreateTextFile(sTestFile)
IsNTAdmin=Err.Number
oFs.DeleteFile(sTestFile)
On Error Goto 0
End Function

' Main
If IsNTAdmin() Then
WScript.Echo "You are not an Administrator, sorry !"
Else
WScript.Echo "You seem to be an Administrator or a Power User !"
End If
--- Coupez ici ---

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr
Méta-MCI \(MVP\)
Le #1214206
Bonjour !

~Jean-Marc~ t'a fourni l'élément important : %username% donne le nom de
l'utilisateur courant.
Sinon, on peut compléter le FIND, pour cibler les groupes locaux (voir
exemples ci-dessous).

Ensuite, le message peut être affiché, en standard, par le batch, en
HTML (1er exemple), ou avec un petite utilitaire (2e exemple).

@-salutations

Michel Claveau

----1er-exemple-------------------------------------------------------------
@echo off
setlocal

FOR /F %%i IN ('net user %username% ^| find "groupe" ^| find "loca" ^|
find /I /C "administrateurs"') DO SET NB=%%i
IF /I %NB% LSS 1 (
SET MSG­ministrateur : NON
) ELSE (
SET MSG­ministrateur : OUI
)
type admin-message.bat | find " " | find /V "Pas moi..." >
%TEMP%tmp.hta
%TEMP%tmp.hta %MSG%
del %TEMP%tmp.hta

endlocal
goto :EOF


<HTML>
<HTA:APPLICATION ID=oHTA
SCROLL="No"
SINGLEINSTANCE="yes"
CAPTION="yes"
BORDER="thin"
BORDERSTYLE="complex" CAPTION="yes" CONTEXTMENU="yes"
INNERBORDER="no" MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no"
NAVIGABLE="no"
SCROLL="no" SCROLLFLAT="no"
SELECTION="no" SHOWINTASKBAR="yes" SINGLEINSTANCE="yes"
SYSMENU="yes" WINDOWSTATE="normal">
<head><TITLE>Statut utilisateur courant</TITLE></head>

<BODY bgColor=#ffffcc onload="ENinit();">
<DIV ID="TOTO" alignÎnter><STRONG><EM><BR><FONT colorˆ0000
size=4>
Votre statut : </FONT>
<BR><BR><FONT color=#ff0000 size=5><DIV
ID=PARAM>XXX<BR></DIV></FONT></DIV>
<SCRIPT language=JavaScript>
function ENinit(){self.resizeTo(340,170);
var ligarg=oHTA.commandLine;
var i=ligarg.slice(1,255).indexOf(""");
var pointeur=document.getElementById('PARAM');
pointeur.innerText=ligarg.slice(i+3,255) + " ";}
</SCRIPT></BODY></HTML>
-----------------------------------------------------------------------------------



----2eme-exemple----------------------------------------------------------
@echo off
setlocal

FOR /F %%i IN ('net user %username% ^| find "groupe" ^| find "loca" ^|
find /I /C "administrateurs"') DO SET NB=%%i
IF /I %NB% LSS 1 (
message Probleme "Vous n'etes pas Administrateur local, helas !"
) ELSE (
message "C'est OK" "Vous etes Administrateur local"
)
endlocal
goto :EOF
-----------------------------------------------------------------------------------



Note : message.exe est disponible là :
http://www.mclaveau.com/batch/util.html
cc134
Le #1506675
Bonjour et merci.

J'a fait tester à mon client le code VBS mais il est un "Power User"... Pas
de bol pour moi.

De plus pour l'install, je n'ai pas le choix, j'ai une application en VB6
avec empaquetage VB6 (choix du client).
J'ai un batch qui me lance l'installation d'un utilitaire (celui qui pose
problème) puis celle de mon appli (via le setup de VB).

Je vais essayer de me renseigner pour connaitre les "interdits" de mon Power
User.

Merci.

CC


"Gilles LAURENT [MVP]"
"cc134" news:fqjg16$jjl$
| Merci,

Bonsoir,

| Ok pour un batch, c'est ce que j'utilise actuellement. Mais
| l'application que j'installe affiche un msg lié au fait que
| l'opérateur ne soit pas un administrateur.

Plusieurs pistes :

1- L'outil de packaging

Ne serait-il pas le rôle de l'installeur (setup) de vérifier si
l'utilisateur courant a les droits nécessaires pour installer votre
application ? Tous les outils de packaging sérieux possèdent cette
fonctionnalité. Je vous invite à jeter un oeil sur les installeurs :
Inno Setup
http://www.jrsoftware.org/isinfo.php

NSIS:
http://nsis.sourceforge.net/Main_Page

2- La détermination des droits

Le test sur la commande "net user" implique que l'utilisateur soit
nominativement membre du groupe local Administrateurs. Cela est rarement
le cas ! En effet les utilisateurs "privilégiés" sont souvent membres de
groupes de domaine intégrés au groupe local (Admins du domaine, via une
stratégie de groupes restreints, de manière intéractive, ...". Toutefois
une solution de contournement consiste à tester les droits de
l'utilisateur sur un dossier du système d'exploitation (ici
%windir%system32). C'est cette solution que je vous propose ici :

--- Coupez ici ---
Function IsNTAdmin
On Error Resume Next
Set oFs=CreateObject("Scripting.FileSystemObject")
Set oSh=CreateObject("WScript.Shell")
sSysPath=oSh.ExpandEnvironmentStrings("%windir%system32")
sTestFile=sSysPath & "IsNTAdmin.log"
oFs.CreateTextFile(sTestFile)
IsNTAdmin=Err.Number
oFs.DeleteFile(sTestFile)
On Error Goto 0
End Function

' Main
If IsNTAdmin() Then
WScript.Echo "You are not an Administrator, sorry !"
Else
WScript.Echo "You seem to be an Administrator or a Power User !"
End If
--- Coupez ici ---

--
Gilles LAURENT
MVP Windows Server - Admin Frameworks
http://glsft.free.fr




cc134
Le #1506674
C'est un message de format MIME en plusieurs parties.

------=_NextPart_000_0046_01C88387.91CA0A60
Content-Type: text/plain;
charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

Bonjour et merci.

Alors j'ai un peu testé tout ça mais je travaille sur des OS différents et il semble que sous NT le "Net user %username%" passe alors que sous XP le système me dit que l'utilisateur n'est pas connu. Par contre en mettant juste "%username%" c'est l'inverse...

Donc je suis un peu perdue...

Merci.

CC


"MCI (ex do ré Mi chel la si do) [MVP]" *** Le même message, en HTML pour éviter les coupures de lignes intempestives ***

Bonjour !

~Jean-Marc~ t'a fourni l'élément important : %username% donne le nom de l'utilisateur courant.
Sinon, on peut compléter le FIND, pour cibler les groupes locaux (voir exemples ci-dessous).

Ensuite, le message peut être affiché, en standard, par le batch, en HTML (1er exemple), ou avec un petite utilitaire (2e exemple).

@-salutations

Michel Claveau


----1er-exemple---------------------------------------------------------- ---
@echo off
setlocal
FOR /F %%i IN ('net user %username% ^| find "groupe" ^| find "loca" ^| find /I /C "administrateurs"') DO SET NB=%%i
IF /I %NB% LSS 1 (
SET MSG­ministrateur : NON
) ELSE (
SET MSG­ministrateur : OUI
)
type admin-message.bat | find " " | find /V "Pas moi..." > %TEMP%tmp.hta
%TEMP%tmp.hta %MSG%
del %TEMP%tmp.hta
endlocal
goto :EOF

<HTML>
<HTA:APPLICATION ID=oHTA
SCROLL="No"
SINGLEINSTANCE="yes"
CAPTION="yes"
BORDER="thin"
BORDERSTYLE="complex" CAPTION="yes" CONTEXTMENU="yes"
INNERBORDER="no" MAXIMIZEBUTTON="no" MINIMIZEBUTTON="no"
NAVIGABLE="no"
SCROLL="no" SCROLLFLAT="no"
SELECTION="no" SHOWINTASKBAR="yes" SINGLEINSTANCE="yes"
SYSMENU="yes" WINDOWSTATE="normal">
<head><TITLE>Statut utilisateur courant</TITLE></head>

<BODY bgColor=#ffffcc onload="ENinit();">
<DIV ID="TOTO" alignÎnter><STRONG><EM><BR><FONT colorˆ0000 size=4>
Votre statut : </FONT>
<BR><BR><FONT color=#ff0000 size=5><DIV ID=PARAM>XXX<BR></DIV></FONT></DIV>
<SCRIPT language=JavaScript>
function ENinit(){self.resizeTo(340,170);
var ligarg=oHTA.commandLine;
var i=ligarg.slice(1,255).indexOf(""");
var pointeur=document.getElementById('PARAM');
pointeur.innerText=ligarg.slice(i+3,255) + " ";}
</SCRIPT></BODY></HTML>
------------------------------------------------------------------------- ----------



----2eme-exemple--------------------------------------------------------- -
@echo off
setlocal
FOR /F %%i IN ('net user %username% ^| find "groupe" ^| find "loca" ^| find /I /C "administrateurs"') DO SET NB=%%i
IF /I %NB% LSS 1 (
message Probleme "Vous n'etes pas Administrateur local, helas !"
) ELSE (
message "C'est OK" "Vous etes Administrateur local"
)
endlocal
goto :EOF
------------------------------------------------------------------------- ----------



Note : message.exe est disponible là :
http://www.mclaveau.com/batch/util.html



------=_NextPart_000_0046_01C88387.91CA0A60
Content-Type: text/html;
charset="Windows-1252"
Content-Transfer-Encoding: quoted-printable

<HTML><HEAD>
<META content="text/html; charset=windows-1252" http-equiv=Content-Type>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=#ffffff>
tout ça mais je travaille sur des OS différents et il semble que sous NT le "Net
user %username%" passe alors que sous XP le système me dit que l'utilisateur
n'est pas connu. Par contre en mettant juste "%username%" c'est
l'inverse...</FONT></DIV>
<DIV>&nbsp;</DIV>
<DIV><FONT face=Arial size=2></FONT>&nbsp;</DIV>
<BLOCKQUOTE
style="BORDER-LEFT: #000000 2px solid; MARGIN-LEFT: 5px; MARGIN-RIGHT: 0px; PADDING-LEFT: 5px; PADDING-RIGHT: 0px">
<DIV>"MCI (ex do ré Mi chel la si do) [MVP]" &lt;<A
href="mailto:"> uO.com</A>&gt;
a écrit dans le message news: <A
href="mailto:"> 2MSFTNGP05.phx.gbl face="Comic Sans MS"><FONT size=2><FONT color=#000080>
<DIV><STRONG><FONT color=#ff0000>*** Le même message, en HTML pour éviter les
coupures de lignes intempestives ***</FONT></STRONG></DIV>
<DIV><STRONG></STRONG>&nbsp;</DIV>
<DIV>Bonjour !<BR><BR>~Jean-Marc~ t'a fourni l'élément important : %username%
donne le nom de l'utilisateur courant.<BR>Sinon, on peut compléter le FIND,
pour cibler les groupes locaux (voir exemples ci-dessous).<BR><BR>Ensuite, le
message peut être affiché, en standard, par le batch, en HTML (1er exemple),
ou avec un petite utilitaire (2e exemple).<BR><BR>@-salutations<BR><BR>Michel
Claveau<BR></DIV>
<DIV><BR>----1er-exemple------------------------------------------------- ------------<BR><FONT
color=#000000 face="Courier New">@echo off<BR>setlocal</FONT></DIV>
<DIV><FONT color=#000000 face="Courier New">FOR /F %%i IN ('net user
%username% ^| find "groupe" ^| find "loca" ^| find /I /C "administrateurs"')
DO SET NB=%%i<BR>IF /I %NB% LSS 1 (<BR>&nbsp; SET MSG­ministrateur :
NON<BR>) ELSE (<BR>&nbsp; SET MSG­ministrateur : OUI<BR>)<BR>type
admin-message.bat | find "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; " | find /V "Pas
moi..." &gt; %TEMP%tmp.hta %TEMP%tmp.hta</FONT></DIV>
<DIV><FONT color=#000000 face="Courier New">endlocal<BR>goto
:EOF<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;HTML&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;HTA:APPLICATION
ID=oHTA<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
SCROLL="No"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
SINGLEINSTANCE="yes"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
CAPTION="yes"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
BORDER="thin"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; BORDERSTYLE="complex"
CAPTION="yes" CONTEXTMENU="yes"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
INNERBORDER="no" MAXIMIZEBUTTON="no"
MINIMIZEBUTTON="no"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
NAVIGABLE="no"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SCROLL="no"
SCROLLFLAT="no"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; SELECTION="no"
SHOWINTASKBAR="yes" SINGLEINSTANCE="yes"<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
SYSMENU="yes" WINDOWSTATE="normal"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;head&gt;&lt;TITLE&gt;Statut utilisateur
courant&lt;/TITLE&gt;&lt;/head&gt;<BR><BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;BODY bgColor=#ffffcc
onload="ENinit();"&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;DIV ID="TOTO"
alignÎnter&gt;&lt;STRONG&gt;&lt;EM&gt;&lt;BR&gt;&lt;FONT colorˆ0000
size=4&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Votre statut :
&lt;/FONT&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &lt;BR&gt;&lt;BR&gt;&lt;FONT
color=#ff0000 size=5&gt;&lt;DIV
ID=PARAM&gt;XXX&lt;BR&gt;&lt;/DIV&gt;&lt;/FONT&gt;&lt;/DIV&gt;<BR>&nbsp ;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;SCRIPT language=JavaScript&gt;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; function
ENinit(){self.resizeTo(340,170);<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var
ligarg=oHTA.commandLine;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var
i=ligarg.slice(1,255).indexOf(""");<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; var
pointeur=document.getElementById('PARAM');<BR>&nbsp;&nbsp;&nbsp;&nbsp;& nbsp;
pointeur.innerText=ligarg.slice(i+3,255) + "
";}<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
&lt;/SCRIPT&gt;&lt;/BODY&gt;&lt;/HTML&gt;</FONT><BR>--------------------- --------------------------------------------------------------<BR><BR><BR ><BR>----2eme-exemple---------------------------------------------------- ------<BR><FONT
color=#000000 face="Courier New">@echo off<BR>setlocal<BR>FOR /F %%i IN ('net
user %username% ^| find "groupe" ^| find "loca" ^| find /I /C
"administrateurs"') DO SET NB=%%i<BR>IF /I %NB% LSS 1 (<BR>&nbsp; message
Probleme "Vous n'etes pas Administrateur local, helas !"<BR>) ELSE (<BR>&nbsp;
message "C'est OK" "Vous etes Administrateur local"<BR>)<BR>endlocal<BR>goto
:EOF<BR></FONT>---------------------------------------------------------- -------------------------<BR><BR><BR><BR>Note
:&nbsp;&nbsp; message.exe est disponible là
:<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <A
href="http://www.mclaveau.com/batch/util.html">http://www.mclaveau.com/ batch/util.html</A><BR></DIV>
<DIV><STRONG></STRONG>&nbsp;</DIV></BLOCKQUOTE></FONT></FONT></FONT></BOD Y></HTML>

------=_NextPart_000_0046_01C88387.91CA0A60--
Méta-MCI \(MVP\)
Le #1551012
Bonjour !

Si vous utilisez %username% tout seul, vous allez chercher dans le nom
lui-même, et pas dans son appartenance à un groupe.
Pour les différents OS, il faut tester la commande isolément (du FOR).

Je regrette d'avoir à le dire, mais il ne faut pas appréhender
l'informatique comme la magie. Il faut essayer de comprendre le
déroulement des opérations, et pas utiliser une formule magique toute
prête.
Il y a un risque, à utiliser Abracadabra.bat (ou Abracadabra.vbs avec
Gilles Laurent), sans en comprendre le contenu : au moindre changement
de situation, tout peut être bloqué.
Lorsqu'on vous donne des indications, des informations, des "trucs",
c'est pour vous guider, pas pour vous fournir une prestation toute
ficelée.

@-salutations
--
Michel Claveau
cc134
Le #1581733
Merci Michel,

"Méta-MCI (MVP)" news: 47d78ee3$0$878$
Bonjour !

Si vous utilisez %username% tout seul, vous allez chercher dans le nom
lui-même, et pas dans son appartenance à un groupe.


Surement... j'ai juste remarqué que la commande "net use %username%" ne
fonctionnait pas de la même manière sur des OS différents

Pour les différents OS, il faut tester la commande isolément (du FOR).

Je regrette d'avoir à le dire, mais il ne faut pas appréhender
l'informatique comme la magie. Il faut essayer de comprendre le
déroulement des opérations, et pas utiliser une formule magique toute
prête.


???
Ca a le mérite d'être clair, les magiciens et les bonnes fées
n'existent donc pas...
???

Il y a un risque, à utiliser Abracadabra.bat (ou Abracadabra.vbs avec
Gilles Laurent), sans en comprendre le contenu : au moindre changement
de situation, tout peut être bloqué.
Lorsqu'on vous donne des indications, des informations, des "trucs",
c'est pour vous guider, pas pour vous fournir une prestation toute
ficelée.

Ayant déjà passé pas mal de temps à tester et à rechercher sur le net

des "Trucs", des informations, des astuces pour savoir si mon utilisateur
connecté est un administrateur ou pas, j'ai tout simplement voulu axer
mes recherches vers... le partage des connaissances, la veille
technologique, car mes connaissances en commandes Doc ou VBS sont limitées.

Je pensais que je pourrai m'appuyer sur les connaissances et les
compétences de certains ou certaines pour m'aider à trouver une solution.
Et certaines réponses m'ont aidé dans le choix d'une solution.

Mais j'avoue que je ne m'attendais pas à ce genre de réponse...

Bon WE à tous.

CC

@-salutations
--
Michel Claveau



Publicité
Poster une réponse
Anonyme