Si tu n'est pas administrateur utilise cette fonction // Entrée : pProgrammeName Nom du programme à lancer. Exemple "C:\WINNT\system32\CMD.EXE" // pParam Parametres de la commande // pLoginName Login de type administrateur // pPassword Le mot de passe // pWait Attente de la fin du programme lancé ou pas... // // Sortie : Booleen True / False // //if RunAs(Programme, "" "........", ".......") then // info("OK") //else // info("PAS BON !") //END
FUNCTION RUNAS(pProgrammeName, pParameters, pLoginAdmin, pPasswordAdmin, pWait=True)
sUserName est une chaîne UNICODE = AnsiVersUnicode(pLoginAdmin+"@"+DomainePrefix) sPassword est une chaîne UNICODE = AnsiVersUnicode(pPasswordAdmin) ApplicationName est une chaîne UNICODE = AnsiVersUnicode(pProgrammeName) LineCommand est une chaîne UNICODE = AnsiVersUnicode(pParameters) Titre est une chaîne UNICODE sur 512 = AnsiVersUnicode("RunAs...")
dwLogonMode est un entier = 0x00000001 dwCreationFlag est un entier = Null stStartupInfo est un STARTUPINFO stProcessInfo est un PROCESS_INFORMATION stStartupInfo:cb = Dimension(stStartupInfo) stStartupInfo:lpTitle = Null stStartupInfo:dwFlags = 0x00000000 bRetAPI est un booléen = False
// On envoie la sauce bRetAPI = AppelDLL32("Advapi32.dll","CreateProcessWithLogonW",&sUserName, Null, &sPassword, dwLogonMode,... &ApplicationName, &LineCommand,... dwCreationFlag, Null, Null, &stStartupInfo, &stProcessInfo)
// Attente de la fin IF bRetAPI AND pWait THEN WHILE ExeLancé(pProgrammeName) Multitache() END END
// Libération des ressources liées aux structures en fin d'execution API("KERNEL32","CloseHandle",stProcessInfo:hProcess) API("KERNEL32","CloseHandle",stProcessInfo:hThread)
RENVOYER bRetAPI
qui te permet de lancer un batch en tant qu'administrateur |