Usando o IIS6 para executar o processo de kill. Executável trava

1

Estou usando o código a seguir (qualquer tentativa de várias variações) em uma página da Web que supostamente elimina um processo no servidor:

    Process scriptProc = new Process();
    SecureString password = new SecureString();
    password.AppendChar('p');
    password.AppendChar('s');
    password.AppendChar('s');
    password.AppendChar('w');
    password.AppendChar('d');
    scriptProc.StartInfo.UserName = "mylocaluser";
    scriptProc.StartInfo.Password = password;
    scriptProc.StartInfo.FileName = @"C:\WINDOWS\System32\WScript.exe";
    scriptProc.StartInfo.Arguments = @"c:\windows\system32\killMyApp.vbs";
    scriptProc.StartInfo.UseShellExecute = false;
    scriptProc.Start();
    scriptProc.WaitForExit();
    scriptProc.Close();

O arquivo VBS deve matar um processo w3wp.exe diferente, que tende a travar. Este é um aplicativo da Web herdado que substituiremos em breve, mas, enquanto isso, precisamos desativar e forçar o encerramento do aplicativo quando isso acontecer.

Devo notar que matar o w3wp.exe não é algo I.T. profissionais fazem.

O que acontece é que o WScript.exe está no gerenciador de tarefas toda vez que eu executo a página de eliminação e ela nunca desaparece.

O processo WScript.exe (e eu tentei outros como psexec.exe) está sendo executado como um usuário local com direitos de administrador (e eu tentei outros tipos de usuários, incluindo administradores de domínio) quando executado a partir do IIS, mas funciona quando executar a partir da linha de comando no servidor.

    
por David 04.06.2012 / 21:17

2 respostas

2

Sim, sim deveria. O Serviço de Rede é uma conta no nível do usuário, na melhor das hipóteses, e o AFAIK IIRC só conseguirá matar os processos iniciados.

Se a tarefa estiver sendo executada no próprio servidor, a maneira mais fácil provavelmente exigirá a autenticação integrada do Windows para a página e a ACL para que somente os administradores e o sistema possam lê-la.

Isso garante que apenas os administradores possam fazer logon na página e que haja um pouco de responsabilidade sobre quem matou o processo.

Além disso, um outro pensamento: você confirmou que o KillMyProcess.vbs funciona de forma confiável quando executado interativamente com cscript killmyprocess.vbs ?

    
por 05.06.2012 / 07:25
1

Eu sei que isso não responde diretamente à sua pergunta. Mas não faria mais sentido tirar o IIS e a intervenção manual do usuário da equação? Bloqueio de uma ferramenta de monitoramento real (SCOM, Nagios, etc) no lugar, eu acho que você poderia escrever um script que é executado periodicamente via agendador de tarefas no servidor ofensivo que pode detectar se o aplicativo está suspenso e tomar as medidas adequadas. >

Por que esperar até que alguém realmente perceba o problema e tenha que tirar um tempo para consertá-lo? Apenas automatize o problema até que você possa se livrar do aplicativo legado.

    
por 05.06.2012 / 18:18