[VBS] Lancé un script avec droit admin ?

Duki Messages postés 3083 Date d'inscription   Statut Membre Dernière intervention   -  
Duki Messages postés 3083 Date d'inscription   Statut Membre Dernière intervention   -
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

4 réponses

  1. xav3601 Messages postés 3390 Statut Membre 312
     
    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!
    1
    1. Duki Messages postés 3083 Date d'inscription   Statut Membre Dernière intervention   140
       
      Je vais essayer de suivre ton conseil =)
      Je vous redit !
      0
  2. xav3601 Messages postés 3390 Statut Membre 312
     
    Peux tu nous donner les morceau de ton codes qui necessite les droits admin afin d'etre executer svp!
    merci d'avance
    0
    1. Duki Messages postés 3083 Date d'inscription   Statut Membre Dernière intervention   140
       
      '********************************************************************************************'
      ' 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à :)
      0
  3. xav3601 Messages postés 3390 Statut Membre 312
     
    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?
    0
  4. Duki Messages postés 3083 Date d'inscription   Statut Membre Dernière intervention   140
     
    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
    0