Para abrir programas, que apenas administradores conseguem abrir, já fizemos um post Usando o Process Monitor para programas que não funcionam por falta de permissão e outro ensinando sobre o Aplicativo Microsoft para as aplicações que existem que sejam executadas como administrador. Ainda sim, por algum motivo você pode precisar chamar um programa com uma credencial específica e não queira usar script .vbs ou .ps1 (mesmo encriptando eles, para encobrir a credencial usada) ou queira usar programas terceiro, como o Runas Tool, por vários motivos de segurança.

Aqui vamos dar mais uma opção, que é criar um programa próprio no Visual Studio pequeno e simples que encerra o aplicativo aberto e reabre com outra credencial, que usamos em ambiente de teste e treinamento.

Em nosso exemplo, vamos usar as seguintes informações (deixaremos em cinza para que você altere conforme sua realidade):

  • O programa que encerraremos é o: Treinamento.exe;
  • O programa que iniciaremos é o: C:\Temp\Treinamento.exe;
  • O usuário usaremos é o: nome_do_usuario;
  • A senha do usuário usaremos é: a_senha_do_usuario.

Faça download, instale e abra o Visual Studio Community, crie um novo projeto do tipo Console App (.NET Framework), com o nome Treinamento (veja o local onde está salvando esse projeto, para você acessar depois e copiar o arquivo compilado) e coloque o seguinte código:

using System;
using System.Diagnostics;
using System.Windows.Forms;
using System.Security;
namespace Treinamento
{
    static class Program
    {
        [STAThread]
        static void Main()
        {
            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            foreach (Process p in Process.GetProcesses())
            {
                string name = p.ProcessName.ToLower();
                //O NOME DO PROCESSO DEVE FICAR TODO EM MINÚSCULO, NÃO PRECISA DO .EXE
                if (name == "treinamento")
                {
                    p.Kill();
                }
            }
            System.Threading.Thread.Sleep(1000);
            SecureString variavelsenha = new SecureString();
            foreach (char c in "a_senha_do_usuário")
                variavelsenha.AppendChar(c);
            //System.Diagnostics.Process.Start("C:\\Temp\\Treinamento.exe", "atendimento", variavelsenha, ".");
            Process.Start("C:\\Temp\\Treinamento.exe", "nome_do_usuario", variavelsenha, ".");
        }
    }
}

Use informações que possa ser testado em seu computador e teste o código (ícone de Play) para ver se funciona conforme esperado, estando correto copie o arquivo .exe que estará na pasta do projeto (dentro da pasta bin\Release). Outra informação: No código, deixamos o nome do processo a ser finalizado e iniciado duplicado (sem usar como uma variável) para a possibilidade de você encerrar um processo que tem um nome e iniciar OUTRO processo.

Fontes/Referências

NVLAN – Aplicativo Microsoft para as aplicações que exigem ser executadas como administrador
NVLAN – Usando o Process Monitor para programas que não funcionam por falta de permissão

Mais Informações

Esperamos ter ajudado da melhor forma possível e estaremos sempre a disposição para mais informações.

Entre em contato conosco pelo e-mail equipe@nvlan.com.br.

NVLAN - Consultoria