COMO PROTEGER UM .MDB EM REDE DE SER DELETADO ???
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.
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.
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).
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.
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.
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?
Não tem como, pois o Explorer.exe é a base do sistema operacional Windows a partir do Windows 95.
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
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
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.
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 ?
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
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):
Usando a ADO.Net (usando a mesma suposição):
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)
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 ?
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 ?
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
Tópico encerrado , respostas não são mais permitidas