none
Abrir apenas uma instância POR USUARIO no c# wpf RRS feed

  • Pergunta

  • Bom dia,

    Gostaria de saber como faço para abrir apenas uma instancia do aplicativo por usuario.
    Utilizo esta:

    string Processo = Process.GetCurrentProcess().ProcessName;
                if (Process.GetProcessesByName(Processo).Length > 1)
                {                         
                    MessageBox.Show("O programa já esta aberto", "Programa Aberto", MessageBoxButton.OK, MessageBoxImage.Error);
                    App.Current.Shutdown();
                    return;
                }

    Porém rodo a aplicação em um sistema operacional windows server onde o mesmo teria n usuários, nesta que estou usando ele nao consegue abrir uma instancia para cada usuario, alguem sabe como devo fazer para que todo o usuario abra somente uma instancia do aplicativo??

    sexta-feira, 3 de junho de 2016 12:18

Respostas

  • Cada usuário tem um login e senha ? se sim fica fácil.

    Cria um campo(pode ser um char(1)) na tabela de login e verifica se aquele usuário ja esta logado.

    Pode dar uma incrementada também, tipo incluir a data e hora que o usuário logou no sistema.( mas isso é só se vc tiver necessidade de ter um histórico de acesso).

    Att, wsti. 

     
    sexta-feira, 3 de junho de 2016 13:15

Todas as Respostas

  • Cada usuário tem um login e senha ? se sim fica fácil.

    Cria um campo(pode ser um char(1)) na tabela de login e verifica se aquele usuário ja esta logado.

    Pode dar uma incrementada também, tipo incluir a data e hora que o usuário logou no sistema.( mas isso é só se vc tiver necessidade de ter um histórico de acesso).

    Att, wsti. 

     
    sexta-feira, 3 de junho de 2016 13:15
  • Bom Dia Thales
    Na verdade eu ja tenho essa função, porem o detalhe é o seguinte, quero impedir que no mesmo usuario do server por exemplo execute a mesma aplicação 2 vezes mesmo que com usuarios diferentes entende, nao sei como fazer isso que funcione no server, esse acima que citei funciona mas no server ele so abre uma vez, se um usuario estiver com o sistema aberto outro usuario nao consegue entrar

    sexta-feira, 3 de junho de 2016 13:54
  • Vamos la. Vc tem x usuarios no server certo. exemplo joão, maria, jose , pedro e administrador.  o bloqueio vc vai fazer direto no consulta do sql. administrador logou em 2 terminal services certo. o 1 ts esta logado no seu sistema. automanticamente quando ele loga no seu sistema vc dá um update na tbl do sql "Login" dizendo que admininstrador esta logado "Sim", no 2 ts que logou como administrador tambem, for entrar no seu sistema usando a conta admininstrador, vai verificar tbl_login conta adm esta logado ? resultado "Sim", vc bloqueia a entrada no sistema.  o ts vai continuar aberto, mas o sistema não abre a não ser que seja outra conta interna do seu sistema. A aplicação não vai abrir 2 x. pq mesmo que ela clique no icone no login ja vai dar a msg que ele ja esta logado e fecha. 

    Eu entendi o seu caso, esse esquema que passei vai funcionar somente pra logar no sistema o mesmo usuário do sistema. o que vc esta pensando e em bloquear o sistema atraves do terminal service. Uma outra solução seria gravar o identificador do Terminal service. e ai bloquear, da mesma forma que seria por Ip.  maquina X ip 10.10.2.19 ja esta com o sistema aberto, não abre o sistema outra vez. 

    veja se este artigo te ajuda.

    http://balaiotecnologico.blogspot.com.br/2011/12/preparando-execucao-de-um-programa-em.html

    Att, Wsti.

    sexta-feira, 3 de junho de 2016 15:17