COMO PROTEGER UM .MDB EM REDE DE SER DELETADO ???

GRIFFON17 18/04/2013 13:49:31
#422132
Fala pessoal !

Estou criando um Aplicativo de cadastro de clientes em VB.NET, o BD deste aplicativo está em Access.

Pretendo criar uma rede de 5 computadores, com 5 cópias do Aplicativo, mas um único BD (compartilhado) a todos.

Tenho medo de que um dos usuários delete o arquivo .mdb, me causando o transtorno de ter que restaurá-lo através de backup.

Dúvida: Como eu faço para proteger o .mdb de ser deletado ? Se eu restringir o arquivo como [Ô]somente leitura[Ô] o Aplicativo não poderá salvar/atualizar contatos.
NETMANIA 18/04/2013 14:15:27
#422135
Se o servidor estiver em rede com domínio, você pode tentar criar permissões para só permitir edição dos arquivos que estão neste diretório. Se você não tiver em uma rede com domínio, pense em usar um gerenciador de banco de dados (como MySQL ou Firebird), que assim, o usuário não tem acesso aos arquivos e você pode criar permissões para impedir que o usuário possa mexer nos dados (ex: restringir a exclusão de dados do login usado na sua aplicação para se conectar com o banco).
OCELOT 18/04/2013 15:10:01
#422138
Não tem como proteger access, o programa precisa poder ler e gravar o arquivo diretamente para poder usar o banco de dados, logo o usuário também pode fazer o mesmo com qualquer outro programa, digamos que você consiga impedir ele de excluir, ele ainda poderia abrir o arquivo com algum outro programa, até mesmo o bloco de notas, excluir o conteúdo e salvar o arquivo vazio no lugar.

Se quer mesmo segurança vá para um SGDB, se o access era o suficiente para você então o SQL Server Express deve ser muito mais do que você precisa e no geral é fácil migrar do access para ele.
GRIFFON17 18/04/2013 15:50:11
#422141
Citação:

:
Não tem como proteger access, o programa precisa poder ler e gravar o arquivo diretamente para poder usar o banco de dados, logo o usuário também pode fazer o mesmo com qualquer outro programa, digamos que você consiga impedir ele de excluir, ele ainda poderia abrir o arquivo com algum outro programa, até mesmo o bloco de notas, excluir o conteúdo e salvar o arquivo vazio no lugar.

Se quer mesmo segurança vá para um SGDB, se o access era o suficiente para você então o SQL Server Express deve ser muito mais do que você precisa e no geral é fácil migrar do access para ele.



Entendi.

E tem algum modo de fazer o aplicativo assim que o Windows iniciar, sem que o explorer.exe seja aberto ? Assim o usuário só teria opção de usar o programa.
Seria possível ainda usar o Windows server 2008 para ajudar a resolver este problema?
NETMANIA 18/04/2013 16:50:13
#422149
Não tem como, pois o Explorer.exe é a base do sistema operacional Windows a partir do Windows 95.
OCELOT 18/04/2013 17:51:50
#422153
Por mais que tenha como fazer o explorer não abrir ainda não resolveria o problema, pois ainda seria possível por exemplo apertar Ctrl + Alt + Del e abrir o gerenciador de tarefas, e dele abrir o explorer ou qualquer outro programa.

E esse provavelmente não é o único modo, sem contar que o computador ficaria inutilizado para qualquer outra coisa e no momento que precisar de um computador que possa fazer qualquer coisa dele vai ser possível acessar o arquivo do banco de dados.

Se você realmente está preocupado com o banco de dados então troque para um SGDB, eu diria que é a sua melhor alternativa
FELLIPEASSIS 18/04/2013 18:29:06
#422156
Resposta escolhida
crie um dominio no windows como administrador dai precisara de login e senha para apagar,fazer leitura ou alterar o nome do arquivo mas pra ser sincero prefira SGBD doque GA, access nao é considerado banco de dados pq ñ tem suporte EX: procedures que agiliza na comunicaçao entre dados, triggers, funçoes, etc... eu recomendo MySQL, PostgreSQL que sao gratuitos, já o SQL Server, Oracle, possue uma licença ($$$) mais vale a pena pq eles dão suporte técnico entre outras.
GRIFFON17 22/04/2013 10:59:18
#422261
Ok, então vou tentar modificar meu BD em Access para MySQL. Minhas dúvidas:
1- Alguém tem alguma dica de ferramenta para essa conversão ?
2- Como converter este código ADODB para acessar o MySQL ?
        Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim CNSTR As String
Dim String1 As String

CNSTR = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\BancoDeDados.mdb[Ô]
CN.Open(CNSTR)
RS.Open([Ô]Select Clie_nome,Clie_Cod from Clientes order by Clie_Nome[Ô], CN)

String1 = RS.Fields([Ô]Clie_Nome[Ô]).Value
PROFESSOR 23/04/2013 12:38:41
#422368
Hehehehehe!

Rapaz, vai sair do Access para um MySQL mesmo ? De fato, usando MySQL, os arquivos de dados têm menos risco de serem apagados, e a tecnologia é Client/Server, o que é mais robusto e adequado para um aplicativo com compartilhamento de dados.

A migração pode dar algum trabalho. Sempre dá, mas com calma, você chega lá.

Só estou me admirando aqui que ninguém tenha sugerido que o aplicativo fosse feito para Intranet, ao invés de Desktop, o que resolveria todos os problemas, e sem precisar abandonar o MS-Access ...

Outro detalhe, o uso da tecnologia Recordsets ADO, antiga e cujo suporte tem a tendência de desaparecer em prazo razoavelmente curto. Só para você ter uma idéia de como é mais simples o uso da ADO.Net, compare:

Seu código original (você supôs que existe sempre um registro com o campo Clie_nome não-nulo):


Dim CN As New ADODB.Connection
Dim RS As New ADODB.Recordset
Dim CNSTR As String
Dim String1 As String
CNSTR = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data source=C:\BancoDeDados.mdb[Ô]
CN.Open(CNSTR)
RS.Open([Ô]Select Clie_nome,Clie_Cod from Clientes order by Clie_Nome[Ô], CN)
String1 = RS.Fields([Ô]Clie_Nome[Ô]).Value


Usando a ADO.Net (usando a mesma suposição):

        
Dim String1 As String
Dim tb As New DataTable
Using da As New OleDbDataAdapter([Ô]Select Clie_nome,Clie_Cod from Clientes order by Clie_Nome[Ô], _
[Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\BancoDeDados.mdb[Ô])
da.Fill(tb)
End Using
String1 = CType(tb.Rows(0)([Ô]Clie_Nome[Ô]), String)


GRIFFON17 23/04/2013 13:46:38
#422376
Resolvi que, por enquanto, vou manter meu BD em access mesmo.

Para evitar que apaguem o arquivo estou pensando no seguinte:
- colocar ele oculto dentro da pasta windows (para que não o encontrem fuçando)
- instalar um keylogger para ter controle de quem usar o Pesquisar com termos .mdb ou semelhante
- colocar senha no .mdb
- criar uma sub no programa para que ele faça backup automaticamente uma vez ao dia.

Aproveitando a oportunidade: alguém recomenda algum keylogger ou código VB.NET com função parecida ?
FELLIPEASSIS 23/04/2013 23:02:03
#422412
ardamax é muito bom já q vc vai usar na maquina nem precisa de encriptador de .exe, só desabilite o antivirus para rodar, ele tem funçao tbm para mandar por email de quanto em quanto tempo algo foi feito na maquina tem a versao paga q é melhor mais sobre ele Ardamax
Página 1 de 2 [11 registro(s)]
Tópico encerrado , respostas não são mais permitidas