VB .NET -  Bloqueando e Desbloqueando pastas no Windows

Neste artigo vamos mostrar como podemos bloquear e desbloquear uma pasta selecionada pelo usuário no sistema de arquivos do Windows usando a linguagem VB .NET.

 

Neste artigo vamos executar alguns comandos em lote usando a função Shell para bloquear e desbloquear uma pasta selecionada pelo usuário usando o controle FolderBrowserDialog.

 

A função Shell executa um programa executável e retorna um inteiro contendo a identificação do processo do programa se o programa ainda está funcionando.

 

O valor de retorno da função Shell depende se o programa denominado em PathName ainda estiver em execução quando o Shell retorna. Se você definir Wait como True e o programa terminar antes que o tempo limite expire, Shell retornará zero. Se o tempo limite expirar, ou se você omitir Wait ou defini-lo como False, o Shell retorna a identificação do processo do programa. A identificação do processo é um número exclusivo que identifica o programa em execução.

 

A sintaxe dessa função é a seguinte:

Public Function Shell(ByVal PathName As String, Optional ByVal Style As AppWinStyle = AppWinStyle.MinimizedFocus, Optional ByVal Wait As Boolean = False, Optional ByVal Timeout As Integer = -1 ) As Integer
Por padrão, a função Shell executa o programa de forma assíncrona. Isso significa que um programa que inicia com a função Shell não pode concluir a execução antes que as instruções que seguem a função Shell executem. Se você deseja aguardar que o programa termine antes de continuar, defina Wait como True.

O controle FolderBrowserDialog permite abrir um janela de diálogo exibindo diretórios que podem ser selecionados pelo usuário.  O controle não exibe arquivos, somente diretórios.

As principais propriedades do controle FolderBrowserDialog são:

Propriedade Descrição
Description Fornece uma mensagem de descrição na caixa de diálogo
RootFolder Indica o diretório raiz a partir da onde a caixa de diálogo começará a exibição dos demais diretórios.
SelectedPath Indica a pasta selecionada pelo usuário
ShowNewFolderButton Informa se o botão - Criar Nova Pasta - será exibido na caixa de diálogo
ShowDialog Exibe a caixa de diálogo

 

Recursos usados

Criando o projeto no VS 2013

 

Abra o Visual Studio 2013 Express for Windows desktop e clique em New Project;

 

Selecione a linguagem VB .NET, o template Windows Forms Application, informe o nome Bloqueando_Pasta e clique em OK;

 

 

No formulário Form1.vb inclua os seguintes controles:

Disponha os controles conforme o leiaute da figura abaixo:

 

 

Agora vamos definir o código abaixo no formulário form1.vb nos eventos Click dos botões Bloquear, Desbloquear, Procurar e Sair:

 

Imports System.IO
Public Class Form1
    Private Sub btnBloquear_Click(sender As Object, e As EventArgs) Handles btnBloquear.Click
        Try
            Dim text1 As String = ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}"
            Shell("cmd /c" & "ren " & txtPastaDestino.Text & " " & txtNomePasta.Text & text1)
            Shell("cmd /c" & "attrib +s +h " & txtPastaDestino.Text & ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}\*.*" & " /S /D")
            Shell("cmd /c" & "attrib +s +h " & txtPastaDestino.Text & ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}" & " /S /D")
            MessageBox.Show("Pasta Bloqueada com sucesso.")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub btnDesbloquear_Click(sender As Object, e As EventArgs) Handles btnDesbloquear.Click
        Try
            Dim text1 As String = ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}"
            Shell("cmd /c" & "attrib -s -h " & txtPastaDestino.Text & ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}" & " /S /D")
            Shell("cmd /c" & "attrib -s -h " & txtPastaDestino.Text & ".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}\*.*" & " /S /D")
            System.Threading.Thread.Sleep(1000)
            Shell("cmd /c" & "ren " & txtPastaDestino.Text & text1 & " " & txtNomePasta.Text)
            MessageBox.Show("Pasta Desbloqueada com sucesso.")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub btnProcurar_Click(sender As Object, e As EventArgs) Handles btnProcurar.Click
        Dim last As String
        Try
            fbd1.ShowDialog()
            txtPastaDestino.Text = fbd1.SelectedPath
            last = Path.GetFileName(fbd1.SelectedPath)
            txtNomePasta.Text = last
            txtPastaDestino.Text = txtPastaDestino.Text.Replace(".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}", "")
            txtNomePasta.Text = txtNomePasta.Text.Replace(".{2559a1f2-21d7-11d4-bdaf-00c04f60b9f0}", "")
        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
    End Sub
    Private Sub btnSair_Click(sender As Object, e As EventArgs) Handles btnSair.Click
        Me.Close()
    End Sub
End Class

No código acima temos que:

1- No evento Click do botão Procurar estamos usando o controle FolderBrowserDialog para selecionar uma pasta do sistema de arquivos.

2- No evento Click do botão btnBloquear estamos  executando o comando Shell para bloquear a pasta selecionada; Aqui abrimos e executando o shell e executamos um comando no prompt de comando que irá primeiro alterar o nome da pasta e depois escondê-la, isto bloqueia a pasta.

3- No evento Click do botão btnDesBloquear estamos  executando o comando Shell para desbloquear a pasta bloqueada revertendo o processo.

Executando o projeto e clicando no botão Procurar teremos a janela Procurar Pasta onde selecionamos a pasta que desejamos bloquear:

 

Após selecionar a pasta, clicando no botão Bloquear teremos a execução do Shell e a mensagem de alerta informando que a pasta esta bloqueada.

Podemos verificar mantendo a janela do Windows Explorer aberta e observar a pasta, que agora apresenta um cadeado como ícone.

Atenção, o processo na verdade oculta a pasta por isso esteja certo da localização da pasta para não perdê-la.

Pegue o projeto completo aqui :  Bloqueando_Pastas.zip

Mat 7:15 Guardai-vos dos falsos profetas, que vêm a vós disfarçados em ovelhas, mas interiormente são lobos devoradores.

Mat 7:16 Pelos seus frutos os conhecereis. Colhem-se, porventura, uvas dos espinheiros, ou figos dos abrolhos?

Mat 7:17 Assim, toda árvore boa produz bons frutos; porém a árvore má produz frutos maus.

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

 

             Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter
 

Referências:


José Carlos Macoratti