Rechercher : dans
Par :

[VBS] Lancé un script avec droit admin ?

Dernière réponse le 2 déc 2008 à 10:27:12 Duki, le 2 déc 2008 à 10:09:18 
 Signaler ce message aux modérateurs

Bonjour,

Voilà j'ai un script VBS qui active le Netbios et modifie le runOnce de IE 7. Le script marche sur un ordinateur qui a les droits administrateurs mais ne fonctionne pas sur un ordinateur ayant les droits restreints.

J'ai vu qu'il existait des petits outils permettant de lancé un programme avec les droits administrateurs. Mais je veux savoir si il existe un bout de code qu'il faudrait rajouter à mon script pour qu'il se lance avec les droits administrateurs.


Merci d'avance.
L'alcool c'est l'ennemi de tous, mais fuir son ennemi c'est ­lâche.

Configuration: Windows XP
Firefox 3.0.3

Meilleures réponses pour « [VBS] Lancé un script avec droit admin ? » dans :
Exécuter un script shell VoirExécution d'un script Pour pouvoir exécuter un script ou un programme en ligne de commande il y a plusieurs possibilités : 1. Le chemin absolu 2. Le chemin relatif 3. Modifier la variable PATH Note: Le Sha...
Installer un firewall sous Ubuntu (Firestarter) VoirAvec l'installation par défaut, Ubuntu n'a pas le moindre port ouvert, ce qui est très sûr. Le risque est donc très faible. Vous ne devriez donc pas avoir besoin d'un firewall. Si toutefois vous en voulez un, vous pouvez utiliser Firestarter. Il...
[Personnaliser] Thème Logon Logoff Bootscreen VoirPersonnaliser Windows XP Vous en avez assez de l'interface standard de Windows XP ? Vous voulez personnaliser, customiser l'ensemble (ou une partie) ? Vous pouvez personnaliser le bureau (thème et papier-peint), mais aussi le style plus général...
VBScript - Les fonctions et les procédures VoirLa notion de procédure On appelle fonction un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel dans le corps du programme principal. Cette notion de sous-programme est généralement appelée fonction (ou procédure)...
Objets WSH (Windows Scripting Host) VoirWSH Windows Scripting Host (WSH) est un hôte de scripts pour les systèmes Microsoft Windows permettant d'interprêter des scripts afin d'automatiser l'administration du système. WSH permet d'interprêter nativement les scripts écrits en JScript ou...
Linux - Ordonnancement des taches VoirIntroduction à l'ordonnancement des tâches L'ordonnancement des tâches consiste à exécuter automatiquement une tâche (une application, une commande, ...) à intervalles de temps réguliers ou bien à des moments précis. Généralement ce type de...

1

xav3601, le 2 déc 2008 à 10:12:10

Peux tu nous donner les morceau de ton codes qui necessite les droits admin afin d'etre executer svp!
merci d'avance

Répondre à xav3601

2

Duki, le 2 déc 2008 à 10:13:09

'***********************************************************­*********************************'
' VBScript
' Auteur : Timothy Borer & Jonas Caillet
' Date : 20.11.08
' Objectif : Rechecher version IE7 et modification de RunOnce_ & Rechecher activation NetBIOS
'********************************************************************************************'

'Option Explicit
On Error Resume Next

'Constantes
Const Log_Suivi = "G:\_Echange\Borer Timothy\Log_Suivi_PC.csv"
Const Log_Info = "G:\_Echange\Borer Timothy\Log_Info_PC.csv"
Const DossierNovel = "C:\NOVELL"
Const FichierGW = "C:\NOVELL\GroupWise\grpwise.exe"

'Variables
Dim WshNetwork, NomPc, objNet,strComputer, objWMIService, colOSes, objOS, sSP, colItems, objItem, dDate, sTime
Dim IPConfigSet, IPConfig, i, cIP, objFSO, colDrives, sTailleLibreC, sTailleTotalC, sTaillePC, Fcsv, colNetCards
Dim NetBIOS, objNetCard, bKeyHS1, bKeyCp2


'*******************************************************************************************************************
'### Phase 1
'### Recherche des informations system

'*** Trouver le nom du poste
Set WshNetwork = WScript.CreateObject("WScript.Network")
cNomPc = WshNetwork.ComputerName

'*** Recherche username
Set objNet = CreateObject("WScript.NetWork")

'*** Rechercher la version du service packl
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOSes = objWMIService.ExecQuery("Select * from Win32_OperatingSystem")
For Each objOS In colOSes
sSP = objOS.ServicePackMajorVersion & "." & _
objOS.ServicePackMinorVersion
Next

'*** Recherche de la date et l'heure
Set colItems = objWMIService.ExecQuery("Select * from Win32_LocalTime",,48)
For Each objItem in colItems
dDate = objItem.Day & "/" & objItem.Month & "/" & objItem.Year
sTime = objItem.Hour & ":" & objItem.Minute
Next

'*** Recherche IP du poste
Set IPConfigSet = GetObject("winmgmts:{impersonationLevel=impersonate}").ExecQuery _
("select IPAddress from Win32_NetworkAdapterConfiguration where IPEnabled=TRUE and DNSDomain=""JU.ch""")
For each IPConfig in IPConfigSet

If Not IsNull(IPConfig.IPAddress) then
For i=LBound(IPConfig.IPAddress) to UBound(IPConfig.IPAddress)
'Donne à la variable cIP la valeur de l'IP du pc
cIP = IPConfig.IPAddress(i)
Next
End If
Next

'*** Recherche taille du poste
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set colDrives = objFSO.Drives
For Each objDrive in colDrives
If objDrive.DriveLetter = "C" then
sTailleLibreC = ((((objDrive.FreeSpace / 1024)/1024)/1024))
sTailleTotalC = (((objDrive.TotalSize / 1024)/1024)/1024)
sTaillePC = Left(((100 / sTailleTotalC) * sTailleLibreC),4)
End if
Next

'*******************************************************************************************************************
'### Phase 2
'### Créer trace info_pc.CSV

Set FSO = CreateObject("Scripting.FileSystemObject")
If Not (fso.FileExists(Log_Info)) Then
'On créer le fichier texte
Set Fcsv = FSO.CreateTextFile(Log_Info,2)
Set Fcsv = FSO.OpenTextFile(Log_Info,8)
'Titre
Fcsv.Write "Date" &";"& "NomPoste" &";"& "NomUser" &";"& "SP" &";"& "IP" &";"& "Taille_C_Total" &";"& "Taille_C_Libre" &";"& "Taille_%" & VbCrLf
' Date - Nom post - Nom user - SP - IP - TailleC -TailleCDispo - %
Fcsv.Close
End If

Set Fcsv = FSO.OpenTextFile(Log_Info,8)
Fcsv.Write dDate &" "& sTime &";"& cNomPc &";"& objNet.UserName &";"& sSP &";"& cIP &";"& Round(sTailleTotalC, 2) &";"& Round(sTailleLibreC, 3) &";"& sTaillePC & vbCrLf
Fcsv.Close

'*******************************************************************************************************************
'### PHASE 3
'### Créer trace suivi_pc.CSV

If Not (fso.FileExists(Log_Suivi)) Then
'On créer le fichier texte
Set Fcsv = FSO.CreateTextFile(Log_Suivi,2)
Set Fcsv = FSO.OpenTextFile(Log_Suivi,8)
Fcsv.Write "Date" &";"& "NomPoste" &";"& "NomUser" &";"& "SP" &";"& "IP" &";"& "Objet" &";"& "Version" & vbCrLf
Fcsv.Close
End If


'*******************************************************************************************************************
'### Phase 4
'### Execution du script en administrateur

Const WbemAuthenticationLevelPktPrivacy = 6

strUser = "pch_adm"
strPassword = "admin2000"

Set objWbemLocator = CreateObject("WbemScripting.SWbemLocator")
Set objWMIService = objwbemLocator.ConnectServer _
(cNomPc, root\cimv2, strUser, strPassword)
objWMIService.Security_.authenticationLevel = WbemAuthenticationLevelPktPrivacy

'Set colItems = objWMIService.ExecQuery _
'("Select * From Win32_OperatingSystem")
'For Each objItem in ColItems
' Wscript.Echo strComputer & ": " & objItem.Caption
'Next


'*******************************************************************************************************************
'### Phase 5
'### Modification NetBios, IE & GW ***

'**** Regarder si le netbios est activé sinon activation
Set colNetCards = objWMIService.ExecQuery _
("Select * From Win32_NetworkAdapterConfiguration Where IPEnabled = True")

For Each objNetCard in colNetCards
NetBIOS = objNetCard.TcpipNetbiosOptions

If Not(NetBIOS = 1) Then
objNetCard.SetTCPIPNetBIOS(1)
Set Fcsv = FSO.OpenTextFile(Log_Suivi,8)

'*** AJOUTE LE TRACE : NET BIOS
Fcsv.Write dDate &" "& sTime &";"& cNomPc &";"& objNet.UserName &";"& sSP &";"& cIP &";"& "Activation NetBIOS" & vbCrLf
Fcsv.Close
End If
Next

'*** Regarder la version d'internet explorer
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2\Applications\MicrosoftIE")
Set colIESettings = objWMIService.ExecQuery _
("Select * from MicrosoftIE_Summary")
For Each strIESetting In colIESettings
IEVer = strIESetting.Version
Next
If Left(IEVer,1) = 7 Then

'*** Modifie RunOnce
Set WshShell = WScript.CreateObject("WScript.Shell")
With WScript.CreateObject("WScript.Shell")
bKeyHS1 = WshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\RunOnceHasShown")
bKeyCp2 = WshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\RunOnceComplete")
If bKey1 = 0 And bKeyCp2 = 0 Then
.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\RunOnceHasShown", 1, "REG_DWORD"
.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\RunOnceComplete", 1, "REG_DWORD"

'*** AJOUTE TRACE : IE7
set Fcsv = FSO.OpenTextFile(Log_Suivi,8)
Fcsv.Write dDate &" "& sTime &";"& cNomPc &";"& objNet.UserName &";"& sSP &";"& cIP &";"& "RunOnce modifiés" &";"& "IE:V "& IEVer & VbCrLf
Fcsv.Close
End If
End With
End if

'*** Regarder la version de GroupeWise
If fso.FolderExists(DossierNovel) Then
GWVer = fso.GetFileVersion(FichierGW)
If GWVer <> "7.0.3.1068" then
'*** Ajoute trace : WGW
set Fcsv = FSO.OpenTextFile(Log_Suivi,8)
Fcsv.Write dDate &" "& sTime &";"& cNomPc &";"& objNet.UserName &";"& sSP &";"& cIP &";"& "GroupeWise" &";"& "GW:V " & GWVer & VbCrLf
Fcsv.Close
End If
End if

'### Termine



Le voilà :)
L'alcool c'est l'ennemi de tous, mais fuir son ennemi c'est lâche.

Répondre à Duki

3

xav3601, le 2 déc 2008 à 10:16:21

Alors ca c'est tout ton code ^^
mais les besoins en droit admin tu les as pour toute les lignes du codes ou juste pour certaines?

Par exemple juste par les appels WMI non?

Répondre à xav3601

4

Duki, le 2 déc 2008 à 10:19:11

Lol désolé ^^

Alors j'aurais besoin de droits admin pour ce bout de code ici :


If Not(NetBIOS = 1) Then
objNetCard.SetTCPIPNetBIOS(1)
Set Fcsv = FSO.OpenTextFile(Log_Suivi,8)


Et celui-là :
'*** Modifie RunOnce
Set WshShell = WScript.CreateObject("WScript.Shell")
With WScript.CreateObject("WScript.Shell")
bKeyHS1 = WshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\RunOnceHasShown")
bKeyCp2 = WshShell.RegRead("HKCU\Software\Microsoft\Internet Explorer\Main\RunOnceComplete")
If bKey1 = 0 And bKeyCp2 = 0 Then
.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\RunOnceHasShown", 1, "REG_DWORD"
.RegWrite "HKCU\Software\Microsoft\Internet Explorer\Main\RunOnceComplete", 1, "REG_DWORD"


=P Merci
L'alcool c'est l'ennemi de tous, mais fuir son ennemi c'est lâche.

Répondre à Duki

5

xav3601, le 2 déc 2008 à 10:23:52

Si c'est pour modifier les cles de registre je te conseillerais plutot d'utiliser l'outils suivant:

Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\default:StdRegProv")

Tu pourras lui donner les droits a utiliser un peu comme avec les appels WMI.
Et niveau code:
objReg.GetStringValue -> pour recuperer la valeur
objReg.SetStringValue -> pour modifier la valeur

j'espere que ca t'aidera!

Répondre à xav3601

6

 Duki, le 2 déc 2008 à 10:27:12
  • +1

Je vais essayer de suivre ton conseil =)
Je vous redit ! L'alcool c'est l'ennemi de tous, mais fuir son ennemi c'est ­lâche.

Répondre à Duki