На главную
ПРАВИЛА FAQ Помощь Участники Календарь Избранное DigiMania RSS
msm.ru
! Правила раздела Windows
1. Указывайте версию Вашей ОС.
2. Запрещается размещать запросы и ссылки на кряки, серийники и т.п., а также вопросы нарушения лицензии ПО и его взлома.
3. Не разрешается давать советы из разряда "Поставь Linux".
4. Переустановка ОС - крайнее и безотказное лекарство, которое знают все. В таких советах никто не нуждается.
5. При публикации скриптов пользоваться тегами code. Тип подсветки кода выбирать строго в соответствии с языком публикуемого кода.
6. Прежде чем задать вопрос, обязательно загляните в FAQ и следуйте написанным рекомендациям для устранения проблемы. И если не помогло, а поиск по разделу не дал результатов - только тогда задавайте вопрос на форуме.
7. Вопросы, связанные с проблемами ПО, задавайте в разделе Программное обеспечение
Модераторы: Akina
Страницы: (22) 1 [2] 3 4 ...  21 22  ( Перейти к последнему сообщению )  
> Полезные скрипты, WSH (js, vbs) + WMI
    ExpandedWrap disabled
      '**************************************************************
      '* Имя: Read_from_Register.vbs                                *
      '* Язык: VBScript                                             *
      '* Назначение: Пример чтения из реестра значений разных типов *
      '**************************************************************
      Const compName = "."
      Const resFileSpec = "C:\ListValues.txt"
      Const HKey = &H80000001 'HKCU
      Const keyPath = "SOFTWARE\Microsoft\Office\10.0\Common\LanguageResources"
      Const ForWriting = 2
      Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & compName & "\root\default:StdRegProv")
      objReg.EnumValues HKey, keyPath, arrNames, arrTypes
      numValues = UBound(arrNames)
      Set objFS = CreateObject("Scripting.FileSystemObject")
      Set resFile = objFS.OpenTextFile(resFileSpec, ForWriting, True)
      For curVal = 0 To numValues
          Select Case arrTypes(curVal)
              Case 1
                  sTemp = "SZ" & " = "
                  objReg.GetStringValue HKey, keyPath, arrNames(curVal), paramVal
                  sTemp = sTemp & paramVal
              Case 2
                  sTemp = "EXPAND_SZ" & " = "
                  objReg.GetExpandedStringValue HKey, keyPath, arrNames(curVal), paramVal
                  sTemp = sTemp & paramVal
              Case 3
                  sTemp = "BINARY" & " = "
                  objReg.GetBinaryValue HKey, keyPath, arrNames(curVal), paramVal
                  For i = 0 To UBound(paramVal)
                      xBin = Hex(paramVal(i))
                      If Len(xBin) = 1 Then
                          xBin = "0" & xBin
                      End If
                      sTemp = sTemp & xBin & " "
                  Next
              Case 4
                  sTemp = "DWORD" & " = "
                  objReg.GetDWORDValue HKey, keyPath, arrNames(curVal), paramVal
                  sTemp = sTemp & paramVal
              Case 7
                  sTemp = "MULTI_SZ" & " = "
                  objReg.GetMultiStringValue HKey, keyPath, arrNames(curVal), paramVal
                  For i = 0 To UBound(paramVal)
                      sTemp = sTemp & paramVal(i) & " "
                  Next
              Case Else: sTemp = arrTypes(curVal)
          End Select
          resFile.WriteLine (arrNames(curVal) & " >> " & sTemp)
      Next
      resFile.Close
      Set resFile = Nothing
      Set objFS = Nothing
      Set objReg = Nothing


    Это сообщение было перенесено сюда или объединено из темы "Полезные скрипты"
    Сообщение отредактировано: Dmitrii -
      ExpandedWrap disabled
        '***************************************************************************
        '* Имя: Verb_Print.vbs                                                     *
        '* Язык: VBScript                                                          *
        '* Назначение: Использование стандартного действия ("глагола") над файлом  *
        '*             для вывода его на печать без явного открывания в приложении *
        '***************************************************************************
        Const myFileName = "Text.txt"
        Const pathToFile = "C:\"
        Const argToVerb = ""
        Const stdVerb = "print"
        Const showMode = 0 'работа в скрытом окне
        Set objApp = CreateObject("Shell.Application")
        objApp.ShellExecute myFileName, argToVerb, pathToFile, stdVerb, showMode
        Set objApp = Nothing


      Это сообщение было перенесено сюда или объединено из темы "Полезные скрипты"
        Dmitrii, КРАЙНЕ желательно размещать не просто скрипты, которые публикуются в учебных материалах, для понимания работы, а скрипты иеющие реальное приложение в локальных доменных сетях.

        Это сообщение было перенесено сюда или объединено из темы "Полезные скрипты"
          Следующий код узнаёт версию файла при помощи GetFileVersion.
          Цитата
          Option Explicit

          Dim fso, oShell ' Object variables
          Dim file, tmp ' Filename

          file = "Forumizer_sources_ru_1.409.exe"


          Set oShell = WScript.CreateObject("WScript.Shell")
          file = oShell.ExpandEnvironmentStrings(file)

          ' Create FileSystemObject object to access the file system.
          Set fso = CreateObject("Scripting.FileSystemObject")

          ' Check whether file exists.
          If fso.FileExists(file) Then
          tmp = fso.GetFileVersion(file) ' Retrieve version.
          If Len(tmp) > 0 Then
          WScript.Echo "File " & file & vbCrLf & _
          "Version: " & tmp
          Else
          WScript.Echo "File " & file & vbCrLf & _
          "Version: undefined"
          End if
          Else
          WScript.Echo "File '" & file & "' not found"
          End If

          '*** End

          собственно, а как задавать версию файла этой же функцией ?
            Цитата Koss @
            собственно, а как задавать версию файла этой же функцией ?

            Оффициально - никак.

            Версия файла задается в ресурсах файла, и подключается к ехе-шнику во время компиляции(точнее линковки), а поменять можно (нелегально :) ) открыв файл и пройдясь по нему в поисках юникодовой строки FileVersion после которой будут юникодовые циферки, в ввиде обыкновенного текста, которые естественно можно подменить. ;)
              ExpandedWrap disabled
                '************************************************************************************************************
                '* Имя: ACL_FSO_Get.vbs                                                                                     *
                '* Язык: VBScript                                                                                           *
                '* Назначение: Получение подробного (полного или частичного) списка управления доступом NTFS (DACL)         *
                '*             указанного каталога текущего компьютера.                                                     *
                '*             Частичный список составляется в том случае, когда задано имя пользователя (группы).          *
                '*             Для составления частичного списка необходимо задать только NetBIOS-имя объекта,              *
                '*             в противном случае будет создан полный список.                                               *
                '*             Можно указать имя объекта либо доменного, либо локального (для текущего компьютера) уровня.  *
                '*             Допустимо указание имён ряда встроенных локальных объектов: "System" (или "Система"), "Все", *
                '*             "Администратор(ы)", "Гост(ь)(и)" и т.п.                                                      *
                '*             Имена объектов можно задавать как в кавычках, так и без них.                                 *
                '*             Имя каталога выбирается с помощью метода BrowseForFolder объекта Shell.Application.          *
                '*             Сценарий ориентирован на работу в графическом режиме.                                        *
                '************************************************************************************************************
                 
                Option Explicit
                 
                End Sub
                Dim objShell, objFolder, strPath
                Dim objWsNet, strDomain, strComputer, blnIsDomain, intOSVersion
                Dim objWMI, objCollection, objItem, objSecSettings, objSD
                Dim strAccount, strSID, strList
                Dim intHasAccount 'Флаг-признак режима работы:
                                  '-1 - не составлять список, т.к. указанная "учётка" не найдена;
                                  '0  - составлять полный список;
                                  '1  - составлять частичный список (только для указанной "учётки").
                 
                Set objShell = CreateObject("Shell.Application")
                Set objFolder = objShell.BrowseForFolder(0, "Выбор каталога", &H10 + &H200, &H11)
                If Not objFolder Is Nothing Then
                    strPath = objFolder.Self.Path
                    Set objWsNet = CreateObject("WScript.Network")
                    strDomain = objWsNet.UserDomain
                    strComputer = objWsNet.ComputerName
                    Set objWsNet = Nothing
                    If StrComp(strDomain, strComputer, vbTextCompare) <> 0 Then blnIsDomain = True
                    Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
                    '--- Определение версии ОС
                    Set objCollection = objWMI.ExecQuery("SELECT Version FROM Win32_OperatingSystem")
                    For Each objItem In objCollection
                        intOSVersion = CInt(Replace(Left(objItem.Version, 3), ".", ""))
                    Next
                    Set objItem = Nothing
                    '------
                    strAccount = Trim(InputBox("Имя пользователя или группы" & vbNewLine & _
                                                "(при составлении полного списка -" & vbNewLine & _
                                                "не указывать):", "Проверка настроек безопасности NTFS"))
                    intHasAccount = 0
                    If Len(strAccount) > 0 Then
                        strAccount = Replace(strAccount, """", "")
                        '--- Настройка правильного наименования "учётки" локальной ОС в зависимости от версии ОС
                        If intOSVersion < 61 Then
                            strAccount = Replace(strAccount, "Система", "System", 1, -1, vbTextCompare)
                        Else
                            strAccount = Replace(strAccount, "System", "Система", 1, -1, vbTextCompare)
                        End If
                        '------
                        If StrComp(strAccount, "System", vbTextCompare) = 0 Or StrComp(strAccount, "Система", vbTextCompare) = 0 Or _
                            StrComp(strAccount, "Все", vbTextCompare) = 0 Then
                            strDomain = vbNullString
                        Else
                            If blnIsDomain Then
                                If MsgBox("Задана доменная учётная запись?", vbYesNo + vbQuestion, "Проверка настроек безопасности NTFS") = vbNo Then
                                    strDomain = strComputer
                                End If
                            Else
                                strDomain = strComputer
                            End If
                        End If
                        '--- Поиск заданной "учётки" на локальном компьютере или в Active Directory
                        If Len(strDomain) > 0 Then
                            Set objCollection = objWMI.ExecQuery("SELECT SID FROM Win32_Account WHERE Domain='" & strDomain & "' AND Name='" & strAccount & "'")
                        Else
                            Set objCollection = objWMI.ExecQuery("SELECT SID FROM Win32_Account WHERE Name='" & strAccount & "'")
                        End If
                        '------
                        If objCollection.Count > 0 Then
                            intHasAccount = 1
                            '--- Определение SID заданной "учётки"
                            For Each objItem In objCollection
                                    strSID = UCase(objItem.SID)
                            Next
                            '------
                        Else
                            intHasAccount = -1
                        End If
                    End If
                    If intHasAccount >= 0 Then
                        Set objSecSettings = objWMI.Get("Win32_LogicalFileSecuritySetting.Path='" & strPath & "'")
                        If objSecSettings.GetSecurityDescriptor(objSD) = 0 Then 'Чтение содержимого дескриптора безопасности каталога
                            strList = vbNullString
                            If Not IsNull(objSD.DACL) Then 'Проверка наличия хотя бы одной записи в DACL каталога
                                Call Get_DACLInfo(objSD.DACL, strList, intHasAccount, strSID, intOSVersion)
                                If Len(strList) > 0 Then
                                    WScript.Echo strList
                                Else
                                    WScript.Echo "В DACL не обнаружено ни одной записи для объекта " & UCase(strDomain & "\" & strAccount)
                                End If
                            Else
                                WScript.Echo "Список управления доступом к каталогу " & UCase(strPath) & " пуст."
                            End If
                        Else
                            WScript.Echo "Не удалось прочитать дескриптор безопасности каталога " & UCase(strPath)
                        End If
                    Else
                        WScript.Echo "Учётная запись объекта " & UCase(strDomain & "\" & strAccount) & " не найдена."
                    End If
                    Set objSecSettings = Nothing
                    Set objCollection = Nothing
                    Set objWMI = Nothing
                Else
                    WScript.Echo "Каталог не выбран."
                End If
                Set objFolder = Nothing
                Set objShell = Nothing
                WScript.Quit 0
                 
                '======
                 
                Function Get_DACLInfo(arrACE(), strRes, intMode, strAccSID, intVer)
                Dim objEntry, strTemp, i, j, lngMask, lngTemp
                Dim arrFlagValue, arrFlagName, arrGenericValue, arrGenericName
                Dim arrSieveGE, arrSieveGW, arrSieveGR, arrTemp
                Const PART_MODE = 1 'Флаг-признак составления частичного списка
                '--- Значения универсальных масок
                Const GENERIC_ALL = &H10000000
                Const GENERIC_EXECUTE = &H20000000
                Const GENERIC_WRITE = &H40000000
                Const GENERIC_READ = &H80000000
                '------
                Const ACCESS_ALLOWED_ACE_TYPE = 0 'Флаг-признак записи типа "РАЗРЕШЕНИЕ"
                Const ACCESS_DENIED_ACE_TYPE = 1  'Флаг-признак записи типа "ЗАПРЕТ"
                Const INHERITED_ACE = 16 'Флаг-признак того, что текущая запись DACL унаследована от родительского каталога
                Const FULL_ACCESS = 983551 'Значение маски полного разрешения или запрета
                Const FLAG_SYNCHRONIZE = 1048576 'Значение флага синхронизации доступа к объекту файловой системы
                                                 '(в версиях ОС "2000/XP", применим только для записей типа "РАЗРЕШЕНИЕ")
                 
                arrFlagValue = Array(32, 1, 128, 8, 2, 4, 256, 16, 64, 65536, 131072, 262144, 524288)
                arrFlagName = Array("Траверс папок / Выполнение файлов", _
                                    "Содержание папки / Чтение данных", _
                                    "Чтение атрибутов", _
                                    "Чтение дополнительных атрибутов", _
                                    "Создание файлов / Запись данных", _
                                    "Создание папок / Дозапись данных", _
                                    "Запись атрибутов", _
                                    "Запись дополнительных атрибутов", _
                                    "Удаление подпапок и файлов", _
                                    "Удаление", _
                                    "Чтение разрешений", _
                                    "Смена разрешений", _
                                    "Смена владельца")
                                                        
                arrGenericValue = Array(&H20000000, &H40000000, &H80000000)
                arrGenericName = Array("Выполнение (универсальная маска)", "Запись (универсальная маска)", "Чтение (универсальная маска)")
                '--- Вспомогательные массивы, предназначенные для детализации универсальных масок
                arrSieveGE = Array(-1, 0, -1, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0)
                arrSieveGW = Array(0, 0, 0, 0, -1, -1, -1, -1, 0, 0, -1, 0, 0)
                arrSieveGR = Array(0, -1, -1, -1, 0, 0, 0, 0, 0, 0, -1, 0, 0)
                '------
                 
                '--- Настройка правильного наименования одного из флагов маски доступа в зависимости от версии ОС
                If intVer < 60 Then
                        arrFlagName(0) = "Обзор папок / Выполнение файлов"
                End If
                '------
                For Each objEntry In arrACE
                    '--- Определение режима наследования записи и области её действия
                    If CBool(objEntry.AceFlags And INHERITED_ACE) Then
                        strTemp = " (унаследовано; "
                        lngTemp = objEntry.AceFlags - INHERITED_ACE
                    Else
                        strTemp = " (не унаследовано; "
                        lngTemp = objEntry.AceFlags
                    End If
                    Select Case lngTemp
                        Case 0: strTemp = strTemp & "действует на: только текущий каталог)"
                        Case 1: strTemp = strTemp & "действует на: текущий каталог и его файлы)"
                        Case 2: strTemp = strTemp & "действует на: текущий каталог и его подкаталоги)"
                        Case 3: strTemp = strTemp & "действует на: текущий каталог, его подкаталоги и файлы)"
                        Case 9: strTemp = strTemp & "действует на: только файлы текущего каталога)"
                        Case 10: strTemp = strTemp & "действует на: только подкаталоги текущего каталога)"
                        Case 11: strTemp = strTemp & "действует на: подкаталоги и файлы текущего каталога)"
                        Case Else: strTemp = strTemp & "область действия не определена); "
                    End Select
                    strTemp = strTemp & vbNewLine & "---" & vbNewLine
                    '------
                    '--- Определение типа записи
                    If objEntry.AceType = ACCESS_ALLOWED_ACE_TYPE Then
                        strTemp = strTemp & "РАЗРЕШЕНО:" & vbNewLine
                    ElseIf objEntry.AceType = ACCESS_DENIED_ACE_TYPE Then
                        strTemp = strTemp & "ЗАПРЕЩЕНО:" & vbNewLine
                    End If
                    '------
                    '--- Определение значения маски "Полный доступ" в зависимости от версии ОС
                    If intVer < 52 Then
                        lngTemp = FULL_ACCESS + Abs(objEntry.AceType - 1) * FLAG_SYNCHRONIZE
                        'Выражение FULL_ACCESS + Abs(objEntry.AceType - 1) * FLAG_SYNCHRONIZE
                        'учитывает разницу между значениями маски "Полный доступ" у записей разных типов
                        'в ОС версий "2000/XP"
                    Else
                        lngTemp = FULL_ACCESS + FLAG_SYNCHRONIZE
                    End If
                    '------
                    lngMask = objEntry.AccessMask
                    Select Case Abs(lngMask)
                        Case lngTemp: strTemp = strTemp & "Полный доступ" & vbNewLine
                        Case GENERIC_ALL: strTemp = strTemp & "Полный доступ (универсальная маска)" & vbNewLine
                        Case Else
                            '--- Детальный анализ маски доступа текущей записи:
                            'обработка универсальных масок (биты №№ 29 - 31)
                            If Abs(lngMask) > lngTemp Then
                                For i = 0 To UBound(arrGenericValue)
                                    If lngMask And arrGenericValue(i) Then
                                        strTemp = strTemp & arrGenericName(i) & vbNewLine & vbTab & "{" & vbNewLine
                                        Select Case arrGenericValue(i)
                                            Case GENERIC_EXECUTE: arrTemp = arrSieveGE
                                            Case GENERIC_WRITE: arrTemp = arrSieveGW
                                            Case GENERIC_READ: arrTemp = arrSieveGR
                                        End Select
                                        For j = 0 To UBound(arrTemp)
                                            If arrTemp(j) Then strTemp = strTemp & vbTab & arrFlagName(j) & vbNewLine
                                        Next
                                        strTemp = strTemp & vbTab & "}" & vbNewLine
                                    End If
                                Next
                            End If
                            'обработка обычных масок (биты №№ 0 - 20)
                            For i = 0 To UBound(arrFlagValue)
                                If lngMask And arrFlagValue(i) Then
                                    strTemp = strTemp & arrFlagName(i) & vbNewLine
                                End If
                            Next
                            '------
                    End Select
                    strTemp = UCase(objEntry.Trustee.Domain & "\" & objEntry.Trustee.Name) & strTemp & "===" & vbNewLine
                    If intMode = PART_MODE Then
                        If StrComp(UCase(objEntry.Trustee.SIDString), strAccSID, vbTextCompare) = 0 Then
                            strRes = strRes & strTemp
                        End If
                    Else
                        strRes = strRes & strTemp
                    End If
                Next
                End Function

              ExpandedWrap disabled
                '**********************************************************************************************
                '* Имя: ACL_Register_CheckAccess.vbs                                                          *
                '* Язык: VBScript                                                                             *
                '* Назначение: Проверка содержимого дескриптора безопасности объекта реестра Windows.         *
                '*             В ОС версий 2000 - 2003 проверка выполняется только для текущего пользователя. *
                '**********************************************************************************************
                Dim objReg, strComputer, strKeyPath, arrFlagName, strList, strTemp
                Dim blnHasRight, strAllowed, strDenied, intOSVersion, intResult
                Dim objSD, objACE, arrTypes
                Const HKCR = &H80000000
                Const HKCU = &H80000001
                Const HKLM = &H80000002
                Const HKU = &H80000003
                Const INHERITED_ACE = 16
                strKeyPath = "Software"
                arrFlagName = Array("Запрос значения", "Задание значения", _
                                    "Создание подраздела", "Перечисление подразделов", _
                                    "Уведомление", "Создание связи", "Удаление", "Запись DAC", _
                                    "Смена владельца", "Чтение разрешений")
                arrFlagValue = Array(&H1, &H2, &H4, &H8, &H10, &H20, &H10000, &H40000, &H80000, &H20000)
                arrTypes = Array("Разрешено с маской -> ", "Запрещено с маской -> ")
                strComputer = "."
                Set objWMI = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
                Set objCollection = objWMI.ExecQuery("SELECT Version FROM Win32_OperatingSystem")
                For Each objItem In objCollection
                    intOSVersion = CInt(Replace(Left(objItem.Version, 3), ".", ""))
                Next
                Set objReg = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\default:StdRegProv")
                strList = vbNullString
                If intOSVersion >= 60 Then
                    intResult = objReg.GetSecurityDescriptor(HKLM, strKeyPath, objSD)
                    If intResult = 0 Then
                        strList = "Метод GetSecurityDescriptor" & vbNewLine & "======" & vbNewLine & vbNewLine
                        If Not IsNull(objSD.DACL) Then
                            For Each objACE In objSD.DACL
                                If CBool(objACE.AceFlags And INHERITED_ACE) Then
                                    strTemp = " - унаследовано "
                                    intTemp = objACE.AceFlags - INHERITED_ACE
                                Else
                                    strTemp = " - не унаследовано "
                                    intTemp = objACE.AceFlags
                                End If
                                Select Case intTemp
                                    Case 0: strTemp = strTemp & "(действует на: только текущий раздел); "
                                    Case 2: strTemp = strTemp & "(действует на: текущий раздел и его подразделы); "
                                    Case 6, 14: strTemp = strTemp & "(действует на: только ближайший подраздел текущего раздела); "
                                    Case 10: strTemp = strTemp & "(действует на: только подразделы текущего раздела); "
                                    Case Else: strTemp = strTemp & "(область действия не определена); "
                                End Select
                                strList = strList & objACE.Trustee.Domain & "\" & objACE.Trustee.Name & strTemp & arrTypes(objACE.AceType) & _
                                            Abs(objACE.AccessMask) & vbNewLine & vbNewLine
                            Next
                            Set objACE = Nothing
                        Else
                            strList = "Список управления доступом (ACL) к заданному объекту пуст."
                        End If
                        Set objSD = Nothing
                    Else
                        strList = "Ошибка " & intResult & " при попытке чтения дескриптора безопасности объекта реестра."
                    End If
                Else
                    strList = "Метод CheckAccess" & vbNewLine & "======" & vbNewLine & vbNewLine
                    For i = LBound(arrFlagValue) To UBound(arrFlagValue)
                        objReg.CheckAccess HKLM, strKeyPath, arrFlagValue(i), blnHasRight
                        If blnHasRight Then
                            strAllowed = strAllowed & arrFlagName(i) & vbNewLine
                        Else
                            strDenied = strDenied & arrFlagName(i) & vbNewLine
                        End If
                    Next
                    If Len(strAllowed) > 0 Then strList = strList & "РАЗРЕШЕНО:" & vbNewLine & "------" & vbNewLine & strAllowed
                        If Len(strDenied) > 0 Then
                            If Len(strAllowed) > 0 Then strList = strList & "======" & vbNewLine
                            strList = strList & "ЗАПРЕЩЕНО:" & vbNewLine & "------" & vbNewLine & strDenied
                        End If
                End If
                Set objReg = Nothing
                WScript.Echo strList
                WScript.Quit 0
              Сообщение отредактировано: Dmitrii -
                Запрет/разрешение сетевого подключения (разрешить/запретить инет)

                Под вистой очень просто:

                ExpandedWrap disabled
                  ' Сохранить как EnableDisableNIC.vbs
                   
                  strComputer = "."
                  Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
                   
                  Set objNetworkSettings = objWMIService.Get("Win32_NetworkAdapter ")
                  If objNetworkSettings.Disable()=0 then
                  'If objNetworkSettings.Enable()=0 then
                      MsgBox "Succes"
                  else
                      MsgBox "Error"
                  end if


                Для всех остальных посложнее но не очень

                ExpandedWrap disabled
                  <package>
                  <job>
                  <object id="objShell" progid="Shell.Application"/>
                  <script language="VBScript">
                  '==================================
                  ' сохранить как On-Off-NIC.wsf
                  '==================================
                  Option Explicit
                  Dim objCP, objEnable, objDisable, colNetwork
                  Dim clsConn, clsLANConn, clsVerb
                  Dim strNetConn, strConn, strEnable, strDisable, strStatus
                  Dim bEnabled, bDisabled
                   
                  strNetConn = "Network Connections"    ' <-- поменять на русских версиях соответственно
                  strConn = "Local Area Connection"     ' <-- Поменять на реальное имя сетевого подключения
                   
                  strEnable = "En&able"
                  strDisable = "Disa&ble"
                   
                  Set objCP = objShell.Namespace(3) '<-Control Panel
                   
                  Set colNetwork = Nothing
                  For Each clsConn in objCP.Items
                      If clsConn.Name = strNetConn Then
                          Set colNetwork = clsConn.getfolder
                          Exit For
                      End If
                  Next
                   
                  If colNetwork is Nothing Then
                      WScript.Echo "Network folder not found"
                      MsgBox "Network folder not found"
                      WScript.Quit
                  End If
                   
                  Set clsLANConn = Nothing
                  For Each clsConn in colNetwork.Items
                        'В случае если сеть поименована как "........ connection 2", и т.д.
                   
                         If Instr(LCase(clsConn.name),LCase(strConn)) Then
                              Set clsLANConn = clsConn
                              Exit For
                         End If
                  Next
                   
                  If clsLANConn is Nothing Then
                        WScript.Echo "Network Connection not found"
                        MsgBox  "Network Connection not found"
                        WScript.Quit
                  End If
                   
                  bEnabled = True
                  Set objEnable = Nothing
                  Set objDisable = Nothing
                  For Each clsVerb in clsLANConn.verbs
                      If clsVerb.name = strEnable Then
                           Set objEnable = clsVerb
                           bEnabled = False
                      End If
                      If clsVerb.name = strDisable Then
                          Set objDisable = clsVerb
                      End If
                  Next
                   
                  If bEnabled Then
                      objDisable.DoIt
                      strStatus="disabled."
                  Else
                      objEnable.DoIt
                      strStatus="enabled."
                  End If
                   
                  ' Дать системе время для остановки/старта сетевого подключения
                  WScript.Sleep 1000
                  MsgBox "Network connections " & strStatus
                  </script>
                  </job>
                  </package>
                  ExpandedWrap disabled
                    'Имя: delRecent.vbs
                    'Язык: VBScript
                    'Назначение: Очищает "Пуск\Документы. У меня в быстром запуске стоит - удобно :)"
                     
                    Dim wsh, fso
                     
                    Set wsh = WScript.CreateObject("WScript.Shell")
                    Set fso = CreateObject("Scripting.FileSystemObject")
                     
                    fso.DeleteFile(wsh.SpecialFolders("Recent") + "\*.*")
                    А чем тебя не устраивает параметр ClearRecentDocsOnExit в реестре?
                      Не хочу чтоб автоматом чистилось.. Хочу чтоб сам 8-)
                        Цитата AlexJ, 19.03.2007, 1:08:19, 1489080
                        поменять можно (нелегально ) открыв файл и пройдясь по нему в поисках юникодовой строки FileVersion после которой будут юникодовые циферки, в ввиде обыкновенного текста, которые естественно можно подменить.

                        Хмм.. Эт получаетса, что у меня тема лабораторной - крэкерство...
                        лана.. А как в сценариях работать с ресурсами файла ????
                          AlexJ
                          Цитата AlexJ @
                          ' Дать системе время для остановки/старта сетевого подключения
                          WScript.Sleep 1000
                          MsgBox "Network connections " & strStatus
                          </script>
                          </job>
                          </package>

                          Эту функцию не плохо было бы реализовать через while, ибо кто те сказал что 1000 милисекунд 100% достаточно для рестарта сервиса. А так же он может горааздо рашьше перезапустьться, и эти 1000 милисекунд просто скрипт будет бездействовать...
                          ИМХО не правильно все это... нужно переписать.
                            Цитата AlexLine @
                            Эту функцию не плохо было бы реализовать через while, ибо кто те сказал что 1000 милисекунд 100% достаточно для рестарта сервиса. А так же он может горааздо рашьше перезапустьться, и эти 1000 милисекунд просто скрипт будет бездействовать...
                            ИМХО не правильно все это... нужно переписать.

                            Не знаю , если ли смысл, скрипт гораздо массивнее получится и не читабельней, а толку только показать юзеру что сеть включена или выключена, в любом случае иконка сетевого подключения сообщит подключается или отключается сеть, а только из-за одно мессаджбокса

                            WScript.Sleep 1000
                            MsgBox "Network connections " & strStatus

                            накручивать... ИМХО не стоит, можно вообще выкинуть эти пару строк, а результат по иконке в трэе наблюдать.
                              Уважаемые коллеги, не затруднит ли Вас создать скрипт, который сохранит объекты домена (WinServ 2003 R2) в текстовый файл в таком виде:


                              ----------------------------
                              |Пользователь|Дата создания|
                              ----------------------------
                              |User1 |26.12.2007 |
                              |User2 |15.01.2001 |
                              |User3 |26.10.2005 |
                              ...


                              ----------------------------
                              |Компьютер |Дата создания|
                              ----------------------------
                              |Comp1 |02.01.2000 |
                              |Comp2 |15.05.2006 |
                              |Comp3 |12.10.2007 |
                              ...

                              Заранее благодарен.
                                Например, так:
                                ExpandedWrap disabled
                                  '*****************************************************************
                                  '* Имя: Users_Computers_List.vbs                                 *
                                  '* Язык: VBScript                                                *
                                  '* Назначение: Формирование списка учётных записей пользователей *
                                  '*             и компьютеров домена с указанием даты их создания *
                                  '*****************************************************************
                                  Const strResFile = "C:\Users_Computers.txt"
                                  Set objRoot = GetObject("LDAP://RootDSE")
                                  strDomName = objRoot.Get("DefaultNamingContext")
                                  Set objRoot = Nothing
                                  strAttributes = "cn,whenCreated"
                                  arrCmdText = Array("<LDAP://" & strDomName & ">;(&(objectCategory=Person)(objectClass=User));" & strAttributes & ";Subtree", _
                                                      "<LDAP://" & strDomName & ">;(objectCategory=Computer);" & strAttributes & ";Subtree")
                                  arrCapLines = Array("|Пользователь|Дата создания|", "|Компьютер|Дата создания|")
                                  Set objConnection = CreateObject("ADODB.Connection")
                                  objConnection.Provider = "ADsDSOObject"
                                  objConnection.Open "Active Directory Provider"
                                  Set objCommand = CreateObject("ADODB.Command")
                                  Set objCommand.ActiveConnection = objConnection
                                  objCommand.Properties("Page Size") = 1000
                                  objCommand.Properties("Timeout") = 30
                                  objCommand.Properties("Sort On") = "cn"
                                  Set objFS = CreateObject("Scripting.FileSystemObject")
                                  Set objFile = objFS.CreateTextFile(strResFile, True)
                                  For i = LBound(arrCmdText) To UBound(arrCmdText)
                                      objCommand.CommandText = arrCmdText(i)
                                      Set objRSet = objCommand.Execute
                                      If objRSet.RecordCount > 0 Then
                                          objFile.WriteLine(arrCapLines(i))
                                          objRSet.MoveFirst
                                          Do Until objRSet.EOF
                                              objFile.WriteLine("|" & objRSet.Fields(0).Value & "|" & DateValue(objRSet.Fields(1).Value) & "|")
                                              objRSet.MoveNext
                                          Loop
                                      End If
                                      If i < UBound(arrCmdText) Then objFile.WriteLine(vbCrLf)
                                  Next
                                  objFile.Close
                                  Set objFile = Nothing
                                  Set objFS = Nothing
                                  Set objRSet = Nothing
                                  Set objCommand = Nothing
                                  Set objConnection = Nothing
                                  WScript.Echo "Готово."
                                Сообщение отредактировано: Dmitrii -
                                0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                                0 пользователей:
                                Страницы: (22) 1 [2] 3 4 ...  21 22


                                Рейтинг@Mail.ru
                                [ Script Execution time: 0,1678 ]   [ 17 queries used ]   [ Generated: 27.06.19, 04:15 GMT ]