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.