Avatar billede ulricho Novice
03. september 2008 - 07:02 Der er 5 kommentarer og
1 løsning

Program til .vbs

Jeg har et visual basic script (.vbs).

På min PC ligger som standard under c:\windows\system32\cscript.exe og ...\wscript.exe. Ingen af programmerne kan dog køre min lille stump kode.

Hvilket lille program skal man downloade fra internettet og hvor ligger det?
03. september 2008 - 08:22 #1
"...af programmerne kan dog køre min lille stump kode..." - hvad sker der da ?
Avatar billede ulricho Novice
03. september 2008 - 09:04 #2
Jeg har lagt filnavn.vbs på c:\ og man kan se på ikonet, at der er tilknyttet et program til filen. Når jeg åbner filnavn.vbs skriver den 'scriptprogrammet "VBScript" til scriptet "c:\filnavn.vbs" kunne ikke findes.'
Avatar billede windll Nybegynder
03. september 2008 - 14:48 #3
Det vil nok blive nemmer at hjælpe hvis vi kun se den fil !!
Avatar billede ulricho Novice
03. september 2008 - 15:09 #4
Det kan du her: - Jeg fandt indholdet under samme emne på eksperten.dk og lagde den efterfølgende ud på c:\

'======================================================================================================================
'Filnavn...........: List_Software.vbs
'Beskrivelse.......: Listning af installerede applikationer
'======================================================================================================================

Option Explicit

'Konstanter
Const ForReading = 1
Const ForWriting = 2
Const ForAppending = 8


'Hovedobjekter
Dim WshShell, FSO, WshNetwork, WMIService

'Info fra Win32_OperatingSystem
Dim sOSCaption, sCSDVersion, sOSLanguage, sVersion

'Info fra Win32_Bios
Dim sSerialNumber

'Info fra Win32_ComputerSystem
Dim sManufacturer, sModel

'Info fra Windows Installer
Dim sMSIVersion, aMSIApps, aMSIAppInstDate

'Info fra registry om andre applikationer
Dim aOtherApps

'Andre variabler
Dim sServerName, sUserName, sTempPath

'Erklæringer
Set WshShell = WScript.CreateObject("WScript.Shell")
Set FSO = WScript.CreateObject("Scripting.FileSystemObject")
Set WshNetwork = WScript.CreateObject("WScript.Network")

sServerName = WshNetwork.ComputerName
sUserName = WshNetwork.UserName
sTempPath = "c:\"


If CheckOS Then
  Set WMIService = GetObject("winmgmts:\\" & sServerName & "\root\cimv2")
  GetFileNames
  Set WMIService = Nothing
Else
  WshShell.Popup "Dette værktøj kan kun benyttes på Windows 2000 eller senere.", 7, "Spiritech - Systeminfo", _
                vbOKOnly + vbExclamation + vbSystemModal
End If


'Oprydning
Set WshNetwork = Nothing
Set FSO = Nothing
Set WshShell = Nothing





Function CheckOS
  Dim sOSVersion, sRegValue
  sOSVersion = WshShell.Environment("PROCESS")("OS")
  CheckOS = False
  If sOSVersion = "Windows_NT" Then
    sRegValue = WshShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\CurrentVersion")
    Select Case sRegValue
      Case "5.0"
        CheckOS = True
      Case "5.1"
        CheckOS = True
    End Select
  End If
End Function


Sub GetFileNames
  Dim sFileName, iAnswer
  GetSystemInfo
  GetMSIApps
  GetOtherApps
  sFileName = sTempPath & sServerName & ".txt"
  If FSO.FileExists(sFileName) Then FSO.DeleteFile sFileName, True
  WriteToTDF sFileName
'  WshShell.Run "notepad.exe " & sFileName, 1, True
'  FSO.DeleteFile sFileName
End Sub


Sub GetSystemInfo
  Dim oMember, i, iArraySize

  Dim wmiOperatingSystemSet
  Set wmiOperatingSystemSet = WMIService.ExecQuery("select * from Win32_OperatingSystem")
  For Each oMember In wmiOperatingSystemSet
    With oMember
      sOSCaption = .Caption
      sCSDVersion = .CSDVersion
      If sCSDVersion = "" Then sCSDVersion = "Ingen"
      sOSLanguage = .OSLanguage
      Select Case sOSLanguage
        Case "1033"
          sOSLanguage = "English"
        Case "1030"
          sOSLanguage = "Dansk"
        Case Else
          sOSLanguage = "Unkendt!"
      End Select
      sVersion = .Version
    End With
  Next
  Set wmiOperatingSystemSet = Nothing

  Dim wmiBiosSet
  Set wmiBiosSet = WMIService.ExecQuery("select * from Win32_Bios")
  For Each oMember In wmiBiosSet
    sSerialNumber = oMember.SerialNumber
  Next
  Set wmiBiosSet = Nothing

  Dim wmiComputerSystemSet
  Set wmiComputerSystemSet = WMIService.ExecQuery("select * from Win32_ComputerSystem")
  For Each oMember In wmiComputerSystemSet
    With oMember
      sManufacturer = .Manufacturer
      sModel = .Model
    End With
  Next
  Set wmiComputerSystemSet = Nothing
End Sub


Sub GetMSIApps
  Dim MSIObj, oProductSet, iArraySize, i, sProduct, k, l, sTemp
  Set MSIObj = Wscript.CreateObject("WindowsInstaller.Installer")
  If IsObject(MSIObj) Then
    sMSIVersion = MSIObj.Version
    Set oProductSet = MSIObj.Products
    iArraySize = oProductSet.Count - 1
    ReDim aMSIApps(iArraySize)
    ReDim aMSIAppInstDate(iArraySize)
    i = 0
    For Each sProduct In oProductSet
      aMSIApps(i) = MSIObj.ProductInfo(sProduct, "ProductName")
      sTemp = MSIObj.ProductInfo(sProduct, "InstallDate")
      aMSIAppInstDate(i) = Right(sTemp, 2) & "-" & Mid(sTemp, 5, 2) & "-" & Left(sTemp, 4)
      i = i + 1
    Next
    For k = 0 To iArraySize - 1
      For l = k + 1 To iArraySize
        If LCase(aMSIApps(l)) < LCase(aMSIApps(k)) Then
          sTemp = aMSIApps(l)
          aMSIApps(l) = aMSIApps(k)
          aMSIApps(k) = sTemp
          sTemp = aMSIAppInstDate(l)
          aMSIAppInstDate(l) = aMSIAppInstDate(k)
          aMSIAppInstDate(k) = sTemp
        End If
      Next
    Next
    Set oProductSet = Nothing
  Else
    sMSIVersion = "Ikke installeret"
    ReDim aMSIApps(0)
    aMSIApps(0) = "N/A"
    ReDim aMSIAppInstDate(0)
    aMSIAppInstDate(0) = "N/A"
  End If
  Set MSIObj = Nothing
End Sub


Sub GetOtherApps
  Const sMainKey = "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"
  Const hDefKey = &H80000002
  Dim oRegistry, sKeys, i, j, k, l, bKeyOK, sVal1, sVal2, iArraySize, sTemp
  Set oRegistry = GetObject("winmgmts:\\" & sServerName & "\root\default:StdRegProv")
  If IsObject(oRegistry) Then
    oRegistry.EnumKey hDefKey, sMainKey, sKeys
    iArraySize = 0
    If IsArray(sKeys) Then
      For i = 0 To UBound(sKeys)
        bKeyOK = True
        If Left(sKeys(i), 1) = "{" And Right(sKeys(i), 1) = "}" Then bKeyOK = False
        If Left(sKeys(i), 1) = "Q" And Len(sKeys(i)) = 7 Then bKeyOK = False
        If bKeyOK Then
          sVal1 = "HKEY_LOCAL_MACHINE\" & sMainKey & "\" & sKeys(i) & "\DisplayName"
          sVal2 = "HKEY_LOCAL_MACHINE\" & sMainKey & "\" & sKeys(i) & "\QuietDisplayName"
          If ExistValue(sVal1) Or ExistValue(sVal2) Then iArraySize = iArraySize + 1
        End If
      Next
      iArraySize = iArraySize - 1
      ReDim aOtherApps(iArraySize)
      j = 0
      For i = 0 To UBound(sKeys)
        bKeyOK = True
        If Left(sKeys(i), 1) = "{" And Right(sKeys(i), 1) = "}" Then bKeyOK = False
        If Left(sKeys(i), 1) = "Q" And Len(sKeys(i)) = 7 Then bKeyOK = False
        If bKeyOK Then
          sVal1 = "HKEY_LOCAL_MACHINE\" & sMainKey & "\" & sKeys(i) & "\DisplayName"
          sVal2 = "HKEY_LOCAL_MACHINE\" & sMainKey & "\" & sKeys(i) & "\QuietDisplayName"
          If ExistValue(sVal1) Then
            aOtherApps(j) = WshShell.RegRead(sVal1)
            j = j + 1
          ElseIf ExistValue(sVal2) Then
            aOtherApps(j) = WshShell.RegRead(sVal2)
            j = j + 1
          End If
        End If
      Next
      For k = 0 To iArraySize - 1
        For l = k + 1 To iArraySize
          If LCase(aOtherApps(l)) < LCase(aOtherApps(k)) Then
            sTemp = aOtherApps(l)
            aOtherApps(l) = aOtherApps(k)
            aOtherApps(k) = sTemp
          End If
        Next
      Next
    Else
      ReDim aOtherApps(0)
      aOtherApps(0) = "N/A"
    End If
  Else
    ReDim aOtherApps(0)
    aOtherApps(0) = "Kun tilgængelig i Windows 2000 eller senere"
  End If
  Set oRegistry = Nothing
End Sub


Function ExistValue(value)
  Dim sVal
  On Error Resume Next
  sVal = WshShell.RegRead(value)
  If Err.Description = Empty Then
    ExistValue = True
  Else
    ExistValue = False
  End If
End Function


Sub WriteToTDF(sFileName)
  Dim oTDFFile, i, iArraySize
  Set oTDFFile = FSO.OpenTextFile(sFileName, ForWriting, True)

  With oTDFFile
    'Titel
    .WriteLine "Brugernavn" & vbTab & ": " & sUserName
    .WriteLine "Dato" & vbTab & vbTab & ": " & Date
    .WriteLine
    .WriteLine "Computernavn" & vbTab & ": " & sServerName
    .WriteLine "Fabrikat" & vbTab & ": " & sManufacturer
    .WriteLine "Model" & vbTab & vbTab & ": " & sModel
    .WriteLine "Serienummer" & vbTab & ": " & sSerialNumber
    .WriteLine
    .WriteLine "Operativsystem" & vbTab & ": " & sOSCaption
    .WriteLine "Version" & vbTab & vbTab & ": " & sVersion
    .WriteLine "Service Pack" & vbTab & ": " & sCSDVersion
    .WriteLine "Sprog" & vbTab & vbTab & ": " & sOSLanguage

    'MSI apps
    .WriteLine
    .WriteLine
    .WriteLine
    .WriteLine vbTab & "Installerede applikationer"
    .WriteLine vbTab & "--------------------------"
    .WriteLine
    .WriteLine vbTab & vbTab & "Windows Installer version: " & sMSIVersion
    .WriteLine
    For i = 0 To UBound(aMSIApps)
      .WriteLine vbTab & vbTab & aMSIApps(i)
    Next

    'Other apps
    .WriteLine
    For i = 0 To UBound(aOtherApps)
      .WriteLine vbTab & vbTab & aOtherApps(i)
    Next
  End With

  Set oTDFFile = Nothing
End Sub
Avatar billede ulricho Novice
03. september 2008 - 15:10 #5
Jeg kører i øvrigt XP med servicepack 3.
Avatar billede ulricho Novice
19. august 2010 - 07:29 #6
ingen svar derfor afsluttet
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester