Clipper On Line • Ver Tópico - Encerrar processo no windows - Erro no server 2019 standard

Encerrar processo no windows - Erro no server 2019 standard

Projeto Harbour - Compilador de código aberto compatível com o Clipper.

Moderador: Moderadores

 

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor malcarli » 11 Ago 2022 10:59

Bom dia, uso a rotina abaixo para verificar e encerrar processos do windows. Funciona perfeitamente em outros windows, mas agora um cliente está com o server 2019 e não funciona no mesmo. Utilizando minigui extended x harbour,compilado com bcc582 em 32 bits, em windows 7. Se alguém tiver sugestão ou experi~encia na solução agradeco. Segue abaixo para análise e conhecimento.

************************ Função Retirar Executável da Memória ******************
Function fRetiradamemoria(cExecutavel, nDerruba)
   * Exemplo postado no PCTOLEDO: Leonardo Machado, alterada por José Alves Siqueira
   * Modificado em 29/03/2012 para minigui x harbour por Marcelo Antonio Lázzaro Carli - malcarli@life.com.br
   * fRetiradamemoria()                 - Verifica quais são os executáveis ativos, retorna array
   * fRetiradamemoria([WINWORD.EXE], 1) - Verifica se o executável está ativo, retorna .T. ou .F.
   * fRetiradamemoria([WINWORD.EXE], 2) - Encerra o executável

   Local aNomesProcesso:= {}, oScriptObj, oWmiService, oListaProcess, oProcessos, lRet:= .F.

   hb_Default(@nDerruba, 0)

   Begin Sequence With {|oErr| break( oErr )}
*      oScriptObj := CREATEOBJECT([wbemScripting.SwbemLocator])  // xharbour
       oScriptObj := win_OleCreateObject([wbemScripting.SwbemLocator])
       oWmiService:= oScriptObj:ConnectServer()
   Recover
       Return (IIF(nDerruba == 0, aNomesProcesso, lRet))
   End

   Begin Sequence With {|oErr| break( oErr )}
       oListaProcess:= oWmiService:ExecQuery("select * from Win32_Process" + IIF(nDerruba == 0,""," where Name='" + cExecutavel + "'"))
   Recover
       Return (IIF(nDerruba == 0, aNomesProcesso, lRet))
   End
   For Each oProcessos in oListaProcess
       Aadd(aNomesProcesso, oProcessos:Name())
       lRet:= .T.
       If nDerruba == 2
          oProcessos:Terminate()
       Endif
   Next
Return (IIF(nDerruba == 0, aNomesProcesso, lRet))
********************* Fim da Função Retirar Executável da Memória **************


Att.

Marcelo A. L. Carli
Marília/SP
Capital Nacional do Alimento ®
https://malc-informatica.ueniweb.com
Insta: @malcarli25
Email / Skype: malcarli@life.com.br
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 184
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 83 vezes
Mens.Curtidas: 4 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor carlaoonline » 11 Ago 2022 14:19

Boa tarde!

Será que alguma coisa mais simples não resolveria?

Tipo...

Function Main()

@ 10,10 say "Kill no NotePad.exe"

cProcesso="NotePad.exe"
bb= "TASKKILL /F /IM "+cProcesso+" /T"
hb_run( bb )



Talvez precise ser executado como administrador....
Avatar de usuário

carlaoonline
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 190
Data de registro: 24 Ago 2014 22:38
Cidade/Estado: Porto Alegre-RS
Curtiu: 73 vezes
Mens.Curtidas: 22 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor malcarli » 12 Ago 2022 09:01

Se fosse só para encerrar, sim. Mas preciso saber se está ativado o processo ou não para tomar decisões. Obg
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 184
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 83 vezes
Mens.Curtidas: 4 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor carlaoonline » 12 Ago 2022 11:12

Bom dia!

...na mesma linha de raciocínio.. (sem complicar...)

FUNCTION ProcessosNaMemoria(cProcesso)
local cExec, cLinha:="", nOcorrencias:=0, cArq:=""
//Escopo->  nResult := hb_ProcessRun( cProcessoommand, [cStdIn], [@cStdOut], [@cStdErr], [lDetach] )
cExec= hb_processRun( "tasklist" ,, @cArq,, .t. )

   FOR F=1 TO MLCOUNT(cArq,100)  // Quantidade de linhas (memoline) em cArq ate 100 colunas.
       cLinha=MEMOLINE(cArq,100,F)  // (arquivo , ate a coluna X , Na linha F)
       IF upper(cProcesso)$UPPER(cLinha)
          nOcorrencias++
       ENDIF
   NEXT
   msgbox("Encontrado "+Alltrim(Str(nOcorrencias))+" arquivo(s) "+cProcesso+" na memoria")

   RETURN nOcorrencias
   *------------------


Abre duas vezes o NotePad.exe e testa ai...
cProcesso="NotePad.exe"

ProcessosNaMemoria(cProcesso)
Avatar de usuário

carlaoonline
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 190
Data de registro: 24 Ago 2014 22:38
Cidade/Estado: Porto Alegre-RS
Curtiu: 73 vezes
Mens.Curtidas: 22 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor Itamar M. Lins Jr. » 12 Ago 2022 14:27

Olá!
Funciona perfeitamente em outros windows,

Eu nem sei como isso ainda funciona no Win10 ou Win11.VBscript vem desligado nos novos windows.
Procure na internet que tem informações de como habilitar.

Saudações,
Itamar M. Lins Jr.
Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor malcarli » 15 Ago 2022 07:43

Não Funcionou no server 2019, demais funciona. Obrigado
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 184
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 83 vezes
Mens.Curtidas: 4 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor carlaoonline » 15 Ago 2022 14:30

Tenta esse...

//----------------------------------------------
Function main()
//----------------------------------------------

Cls
cArq="notePad.exe"+Space(19)

DO WHILE .T.

   @ 10,10 Say "Verificar qual processo?" GET cArq
   READ
   IF LastKey()=27
      Quit
   ENDIF
   
   ProcessosNaMemoria(Alltrim(cArq))

ENDDO
Return
//----------------------------------------------

FUNCTION ProcessosNaMemoria(cProcesso)
local cExec, cLinha:="", nOcorrencias:=0, cArq:="Log.txt"

   IF FILE(cArq)  // NAO USAR LETO_FILE, eh para verificacao local
      ERASE &cArq
   ENDIF
   cExec="TASKLIST>LOG.TXT"
   HB_RUN (cExec)

   cArq=MEMOREAD(cArq)

   FOR F=1 TO MLCOUNT(cArq,100)  // Quantidade de linhas (memoline) em cArq ate 100 colunas.
       cLinha=MEMOLINE(cArq,100,F)  // (arquivo , ate a coluna X , Na linha F)
       IF upper(cProcesso)$UPPER(cLinha)
          nOcorrencias++
       ENDIF
   NEXT
   ALERT("Encontrado "+Alltrim(Str(nOcorrencias))+" arquivo(s) "+cProcesso+" na memoria")

   RETURN nOcorrencias
   *------------------


O principio de funcionamento é o seguinte:

O comando do DOS (CMD do Windows) TASKLIST , através do >LOG.TXT coloca em Log.txt (ou qualquer outro a escolha) o conteúdo do que está na memória (ou sejam o resultado do comando TaskList vai para o arquivo escolhido), e nesse arquivo criado verificamos quantas UPPER ocorrências existem da string "NOTEPAD.EXE" (no caso o default para o exemplo acima), a princípio, isso funciona e funcionará para sempre em qualquer Windows, o que pode é mudar o nome do comando CMD e a distribuição das palavras no arquivo gerado, mas a ideia será a mesma.

Segue o arquivo LOG.TXT gerado pelo executável acima em um PC de teste.


Nome da imagem            Identifi Nome da sessÆo       SessÆo# Uso de mem¢r
========================= ======== ================ =========== ============
System Idle Process              0 Services                   0          8 K
System                           4 Services                   0         20 K
Registry                        92 Services                   0     17.536 K
smss.exe                       356 Services                   0        316 K
csrss.exe                      484 Services                   0      2.116 K
wininit.exe                    572 Services                   0        792 K
services.exe                   644 Services                   0      5.160 K
lsass.exe                      652 Services                   0     11.208 K
svchost.exe                    836 Services                   0     17.476 K
fontdrvhost.exe                860 Services                   0        264 K
svchost.exe                    956 Services                   0     12.280 K
svchost.exe                    480 Services                   0     75.804 K
svchost.exe                   1040 Services                   0     14.344 K
nvvsvc.exe                    1080 Services                   0      4.600 K
nvSCPAPISvr.exe               1088 Services                   0      2.120 K
svchost.exe                   1152 Services                   0     18.996 K
svchost.exe                   1184 Services                   0     42.476 K
svchost.exe                   1324 Services                   0     14.068 K
svchost.exe                   1468 Services                   0     16.280 K
svchost.exe                   1548 Services                   0      8.512 K
Memory Compression            1576 Services                   0     99.368 K
dasHost.exe                   1964 Services                   0     14.432 K
svchost.exe                   2108 Services                   0      9.556 K
dasHost.exe                   2208 Services                   0        292 K
svchost.exe                   2496 Services                   0      7.148 K
svchost.exe                   2568 Services                   0      2.440 K
svchost.exe                   2576 Services                   0      3.908 K
svchost.exe                   2620 Services                   0     14.344 K
svchost.exe                   2708 Services                   0      4.232 K
spoolsv.exe                   2812 Services                   0     18.132 K
svchost.exe                   2860 Services                   0      8.404 K
OfficeClickToRun.exe          2960 Services                   0     12.268 K
svchost.exe                   2980 Services                   0     18.664 K
letodbsvc.exe                 2564 Services                   0        704 K
svchost.exe                   2744 Services                   0      5.168 K
svchost.exe                   3324 Services                   0      3.372 K
svchost.exe                    408 Services                   0      3.872 K
SgrmBroker.exe                4376 Services                   0      4.544 K
svchost.exe                   2180 Services                   0      3.624 K
SearchIndexer.exe             4752 Services                   0     25.232 K
SecurityHealthService.exe     5624 Services                   0      5.520 K
svchost.exe                   7008 Services                   0      2.916 K
MpCopyAccelerator.exe         7136 Services                   0      1.712 K
MoUsoCoreWorker.exe           1996 Services                   0      8.852 K
MsMpEng.exe                   7616 Services                   0    152.260 K
NisSrv.exe                    6952 Services                   0      2.828 K
csrss.exe                     5232 Console                    4      2.560 K
winlogon.exe                  6520 Console                    4      4.920 K
fontdrvhost.exe               5880 Console                    4      3.264 K
dwm.exe                       7348 Console                    4     38.800 K
nvxdsync.exe                  3208 Console                    4     12.224 K
nvvsvc.exe                     732 Console                    4      5.696 K
sihost.exe                    4644 Console                    4     15.924 K
svchost.exe                   3748 Console                    4     29.680 K
taskhostw.exe                 2524 Console                    4     10.104 K
ctfmon.exe                    3884 Console                    4      9.940 K
explorer.exe                  6624 Console                    4    142.540 K
svchost.exe                   5660 Console                    4     15.120 K
StartMenuExperienceHost.e     6572 Console                    4     45.752 K
RuntimeBroker.exe             6912 Console                    4      6.304 K
RuntimeBroker.exe              760 Console                    4     18.916 K
nvtray.exe                    2140 Console                    4      6.116 K
NvBackend.exe                 4048 Console                    4      1.932 K
SecurityHealthSystray.exe     7756 Console                    4      2.140 K
OneDrive.exe                  3632 Console                    4     15.876 K
microsip.exe                  7996 Console                    4      9.584 K
SearchApp.exe                 4836 Console                    4    132.364 K
ShellExperienceHost.exe       7496 Console                    4     21.268 K
RuntimeBroker.exe             6672 Console                    4     10.896 K
RuntimeBroker.exe              704 Console                    4     15.956 K
Calculator.exe                7448 Console                    4        772 K
ApplicationFrameHost.exe      5788 Console                    4     12.216 K
RuntimeBroker.exe             1804 Console                    4      1.500 K
SystemSettings.exe            7476 Console                    4        380 K
UserOOBEBroker.exe            2668 Console                    4      4.268 K
Microsoft.Photos.exe          3084 Console                    4      1.420 K
RuntimeBroker.exe             3932 Console                    4     18.764 K
TextInputHost.exe             6064 Console                    4     12.616 K
svchost.exe                   2612 Console                    4      1.880 K
splwow64.exe                  5312 Console                    4      6.652 K
dllhost.exe                   7956 Console                    4      6.812 K
msedge.exe                    2704 Console                    4    122.564 K
msedge.exe                    3168 Console                    4      2.060 K
msedge.exe                    3312 Console                    4     45.216 K
msedge.exe                    5080 Console                    4     28.996 K
msedge.exe                    2276 Console                    4      7.316 K
hh.exe                        7868 Console                    4     36.024 K
msedge.exe                    6796 Console                    4     90.504 K
msedge.exe                    4568 Console                    4      7.980 K
LockApp.exe                   5264 Console                    4     19.448 K
RuntimeBroker.exe             5648 Console                    4     12.476 K
taskhostw.exe                 4148 Console                    4      8.600 K
svchost.exe                   5800 Services                   0      6.680 K
cmd.exe                        684 Console                    4      4.100 K
conhost.exe                   7624 Console                    4     10.760 K
msedge.exe                    7572 Console                    4    103.904 K
msedge.exe                    7036 Console                    4     90.024 K
msedge.exe                    4528 Console                    4     57.868 K
msedge.exe                    5884 Console                    4     32.420 K
Everything.exe                7464 Console                    4     91.764 K
xDevStudio.exe                3020 Console                    4    117.532 K
svchost.exe                   3040 Services                   0      7.616 K
SearchProtocolHost.exe        3660 Console                    4      7.832 K
cmd.exe                        600 Console                    4      5.080 K
conhost.exe                   7092 Console                    4     11.736 K
smartscreen.exe               4972 Console                    4     23.976 K
notepad++.exe                 6112 Console                    4     24.672 K
SearchFilterHost.exe          3452 Services                   0      7.496 K
WmiPrvSE.exe                  5896 Services                   0     10.000 K
prog2.exe                     3476 Console                    4      5.888 K
notepad.exe                   3696 Console                    4     14.228 K
cmd.exe                       4252 Console                    4      5.180 K
tasklist.exe                  7128 Console                    4      9.416 K



O que pode estar acontecendo é que o usuário não tenha privilégio para executar o comando TaskList.exe, daí realmente não vai funcionar.

Tenta executar em uma janela o comando TASKLIST (ou TASKLIST>LOG.TXT e verifica se gerou o arquivo)
Avatar de usuário

carlaoonline
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 190
Data de registro: 24 Ago 2014 22:38
Cidade/Estado: Porto Alegre-RS
Curtiu: 73 vezes
Mens.Curtidas: 22 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor malcarli » 16 Ago 2022 09:33

Bom dia, mesmo administrador, não funcionou o tasklist.
Anexos
1.png
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 184
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 83 vezes
Mens.Curtidas: 4 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor ANDRIL » 16 Ago 2022 09:46

Tenho Windows Server 2019 Standard 64Bits e o tasklist executa normalmente. Tem algum service pack instalado ai? Aqui não aparece nas informações do sistema.

Até+
Clipper 5.2e / Blinker 5.1 / Harbour 3.2 / GTwvg
Avatar de usuário

ANDRIL
Usuário Nível 5

Usuário Nível 5
 
Mensagens: 1271
Data de registro: 06 Jul 2004 00:44
Curtiu: 12 vezes
Mens.Curtidas: 46 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor carlaoonline » 16 Ago 2022 10:25

malcarli escreveu:Bom dia, mesmo administrador, não funcionou o tasklist.


...bom, já identificamos o problema, talvez por esse mesmo motivo o código inicial que postou também não funcionou...

Não lembro se foi um Server 2016 ou Server 2019 que tive um problema semelhante com o usuário administrador e consegui resolver algumas coisas criando outro usuário administrador e usando ele para as tarefas, ou seja, criei um administrador com outro nome e aposentei o usuário chamado administrador.

Se não me engano o problema com o usuário administrador padrão foi gerado após tradução do Windows para Português, onde houve em algum lugar uma confusão no código do Windows entre a string "administrador" e "administrator".

A título de testes, tenta criar aí, se possível, um usuário chamado MASTER e loga com ele pra ver se consegue executar o tasklist.exe
Avatar de usuário

carlaoonline
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 190
Data de registro: 24 Ago 2014 22:38
Cidade/Estado: Porto Alegre-RS
Curtiu: 73 vezes
Mens.Curtidas: 22 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor malcarli » 17 Ago 2022 07:49

o server está atualizado com a última atualização. Criei outro administrador e mesmo problema
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 184
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 83 vezes
Mens.Curtidas: 4 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor Itamar M. Lins Jr. » 17 Ago 2022 09:40

Avatar de usuário

Itamar M. Lins Jr.
Colaborador

Colaborador
 
Mensagens: 6951
Data de registro: 30 Mai 2007 11:31
Cidade/Estado: Ilheus Bahia
Curtiu: 312 vezes
Mens.Curtidas: 508 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor carlaoonline » 17 Ago 2022 10:59

Bom dia!

malcarli escreveu:o server está atualizado com a última atualização. Criei outro administrador e mesmo problema


... assim que é bom, quando complica um pouco.... senão fica muito fácil...

Caso não resolva com a sugestão do Itamar ou em outros sites, postei um arquivo ZIP com os dois arquivos TaskList.exe existentes em uma instalação do WS2019 que tenho em um HD.

São dois arquivos, um em cada pasta, pode tentar executar eles pra ver se funciona, e caso funcione pode usar ele na pasta do teu projeto apenas para a função que deseja, pode até renomear ele para não confundir com o original.

TaskListsDoWindowsServer2019.zip
TaskLists versão Original do Server 2019 Pt-Br
(92.19 KiB) Baixado 25 vezes


No exemplo que postei eu fiz um teste renomeando o Tasklist.exe do Sever 2019 que postei para tasklistw2019.exe e funcionou normal no Windows 10.

Na linha do código ficou assim:
cExec="tasklistw2019>LOG.TXT"


A única coisa é que executando o TaskList na pasta que ele esta e por linha de comando, o resultado gerado é um formato diferente mas funciona.

O TaskList.exe de 99 KB fica na pasta
C:\Windows\WinSxS\amd64_microsoft-windows-tasklist_31bf3856ad364e35_10.0.17763.1_none_19091c16b27b108b

e o TaskList.exe de 78 KB fica na pasta
C:\Windows\WinSxS\wow64_microsoft-windows-tasklist_31bf3856ad364e35_10.0.17763.1_none_235dc668e6dbd286

Não está descartada a possibilidade de um vírus.....

Caso nada resolva e precise do comando....talvez terá que reinstalar o servidor....
Avatar de usuário

carlaoonline
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 190
Data de registro: 24 Ago 2014 22:38
Cidade/Estado: Porto Alegre-RS
Curtiu: 73 vezes
Mens.Curtidas: 22 vezes

Encerrar processo no windows - Erro no server 2019 standard

Mensagempor malcarli » 18 Ago 2022 09:34

Bom dia, amigo, não funcionou. Isso está muito estranho mesmo. Obrigado
malcarli
Usuário Nível 3

Usuário Nível 3
 
Mensagens: 184
Data de registro: 20 Ago 2015 18:14
Cidade/Estado: marilia/sp
Curtiu: 83 vezes
Mens.Curtidas: 4 vezes




Retornar para Harbour

Quem está online

Usuários vendo este fórum: Google [Bot] e 11 visitantes


Ola Amigo, espero que meu site e forum tem lhe beneficiado, com exemplos e dicas de programacao.
Entao divulgue o link da Doacao abaixo para seus amigos e redes sociais ou faça uma doacao para o site forum...
MUITO OBRIGADO PELA SUA DOACAO!
Faça uma doação para o forum
cron
v
Olá visitante, seja bem-vindo ao Fórum Clipper On Line!
Efetue o seu login ou faça o seu Registro