Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   [решено] Как получить список пользователей (http://forum.oszone.net/showthread.php?t=155890)

Vagac 05-11-2009 16:47 1262457

Как получить список пользователей
 
Как получить список пользователей компьютера и выгрузить в текстовый файл
Вася - Гости.
Петя-Пользователи,Пользователи удаленного рабочего стола.
Боря-Администраторы.
Администратор- Администраторы."Встроенная учетная запись администратора компьютера/домена"

kaster 05-11-2009 18:44 1262548

Вот тебе самый извращенный метод, который я когда-либо видел :)
Даже не знаю, зачем я написал такой скрипт :teeth:
Код:

#include <Array.au3>
RunWait(@ComSpec & ' /c net user > "' & @ScriptDir & '\1.txt"', '', @SW_HIDE)
If Not FileExists(@ScriptDir & '\converter.bat') Then
    $bat = FileOpen(@ScriptDir & '\converter.bat', 2)
    $bat_content = '@echo off' & @CRLF & _
        'if [%2]==[] (' & @CRLF & _
            @TAb & 'echo Convert dos866 to win1251' & @CRLF & _
            @TAb & 'echo Usage: dos2win input.file output.file' & @CRLF & _
            @TAb & 'exit /b 1' & @CRLF & _
        ')' & @CRLF & _
        'set out=%2' & @CRLF & _
        'chcp 866 >nul' & @CRLF & _
        'for /f "tokens=*" %%a in (%1) do call :convert %%a' & @CRLF & _
        'goto :eof' & @CRLF & _
        '' & @CRLF & _
        ':convert' & @CRLF & _
        'chcp 1251 >nul' & @CRLF & _
        'echo %*>>%out%' & @CRLF & _
        'chcp 866 >nul'
    FileWrite($bat, $bat_content)
    FileClose($bat)
EndIf
FileChangeDir(@ScriptDir)
ShellExecuteWait(@ScriptDir & '\converter.bat', '1.txt 2.txt', @ScriptDir, '', @SW_HIDE)
;Sleep(100)
$hUsers = FileOpen(@ScriptDir & '\2.txt', 0)
$sum = ''
While 1
    $line = FileReadLine($hUsers)
    If @error = -1 Then ExitLoop
    $line = StringStripWS($line, 4)
    If StringInStr($line, 'Учетные') OR _
        StringInStr($line, '---') OR _
        StringInStr($line, 'Команда выполнена') Then
            ContinueLoop
    Else

        $sum &= $line & ' '
        ;For $i = 1 to $a
    EndIf
WEnd

;MsgBox(0, '', $sum)
FileClose($hUsers)
FileDelete(@ScriptDir & '\2.txt')
$sum = StringStripWS($sum, 2)
$aUsers = StringSplit($sum, ' ')
For $i = 1 to $aUsers[0]
    RunWait(@ComSpec & ' /c net user ' & $aUsers[$i] & ' > "' & @ScriptDir & '\' & $aUsers[$i] & '.txt"', '', @SW_HIDE)
    FileChangeDir(@ScriptDir)
    ShellExecuteWait(@ScriptDir & '\converter.bat', $aUsers[$i] & '.txt ' & $aUsers[$i] & '_mod.txt', @ScriptDir, '', @SW_HIDE)
Next

После того, как выполниться скрипт, найдешь в папке с ним текстовые файлы
Код:

username.txt
username_mod.txt

Второй - это в читабельном виде

Vagac 06-11-2009 12:24 1263095

Спасибо То что надо


Время: 03:07.

Время: 03:07.
© OSzone.net 2001-