VB .NET - Identificando pastas especiais no .NET 4.0


O ambiente Microsoft Windows inclui muitas pastas especiais, os caminhos podem ser identificados utilizando o método Environment.GetFolderPath. O número de tais pastas duplicou desde o lançamento da versão framework. NET 1.1.

Este artigo descreve os novos diretórios que podem ser localizados usando a plataforma .NET Framework 4.0.

A maneira para acessar os caminhos das pastas do sistema mantém-se inalterado. Como antes, você chama o método GetFolderPath da classe Environment, passando um valor da enumeração definida em Environment.SpecialFolder para determinar qual o caminho da pasta.

Os resultados são retornados em uma string. Os novos caminhos são acessados usando os novos valores constantes na enumeração.

Na tabela abaixo temos a relação das novas constantes que incluem o nome da constante e o resultado de seu uso através do método GetFolderPath:

Constante Descrição
AdminTools Retorna a pasta que gerencia as ferramentas administrativas, incluindo o Microsoft Management Console (MMC)
CDBurning Retorna o caminho da pasta usada para tratar temporariamente arquivos enquanto eles aguardam para serem escritos para um CD ou DVD.
CommonAdminTools Retorna a pasta que gerencia as ferramentas administrativas que são compartilhadas por todos os usuários
CommonDocuments Retorna o caminho para a pasta documentos compartilhados que é acessível a todos os usuários
CommonMusic Retorna o caminho para pasta de músicas compartilhadas por todos os usuários.
CommonOemLinks Constante disponível por questão de compatibilidade. Retorna uma string vazia.
CommonPictures Retorna o caminho para pasta de imagens compartilhadas por todos os usuários.
CommonStartMenu Retorna o caminho para pasta do menu Iniciar compartilhada por todos os usuários.Os itens nesta pasta aparecem no menu Iniciar para qualquer usuário
CommonProgramFilesX86 Retorna o caminho da pasta que contém os arquivos de programas de 32-bit e componentes que são compartilhados entre programas e são disponíveis a todos os usuários.
CommonPrograms Retorna o caminho da pasta que contém os arquivos de programas e componentes que são compartilhados entre programas e todos os usuários.
CommonStartup Retorna o caminho da pasta Iniciar que esta disponível a todos os usuários. Os atalhos incluídos para a pasta são iniciados automaticamente no fim no processo de logon
CommonDesktopDirectory Retorna o caminho da pasta Desktop compartilhada que esta acessível por todos os usuários. Os items nesta pasta aparecem no desktop.
CommonTemplates Retorna o caminho da pasta dos templates compartilhados que são compartilhados com todos os usuários. Esta pasta não existia antes do Windows NT
CommonVideos Retorna o caminho da pasta dos vídeos compartilhados acessíveis por todos os usuários.
Fonts Retorna a pasta que contém a lista de fontes instaladas
LocalizedResources Retorna a pasta que contém os recursos que são localizados para o usuário atual
MyDocuments Retorna o caminho da pasta de documentos do usuário atual. Este valor é equivalente a constante "Personal"
MyVideos Retorna o caminho da pasta dos vídeos do usuário
NetworkShortcuts Retorna o caminho da pasta virtual Atalhos de Rede(Network Shortcuts), a qual pode conter links para recursos na rede,como pasta remotas e sites FTP.
PrinterShortcuts Retorna o caminho da pasta Atalhos de Impressão. Pode conter links que aparecem na pasta impressoras Virtuais
ProgramFilesX86 Retorna o caminho da pasta Arquivos de Programas(Program Files) que contém software do usuário de 32-bit.
Resources Retorna a pasta que contém recursos que podem ser usados pelo usuário atual
SystemX86 Retorna o caminho da pasta Windows System.
UserProfile Retorna a pasta raiz do perfil do usuário atual. Esta pasta não deverá ser usada para armazenar arqivos.Use o caminho a partir de ApplicationData special folder.
Windows Returns o caminho da pasta Windows.

Exibindo todos as pastas especiais

O código a seguir percorre uma lista ordenada de pastas especiais, retornando o nome da constante SpecialFolder e seu caminho atual:

No formulário form1 inclua um controle ListBox(lstResultado) e um botão de comando e no seu evento Click inclua o código abaixo:

using System;
using System.Linq;
using System.Windows.Forms;

namespace PastasEspeciais_Csharp
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void btnExibirPastas_Click(object sender, EventArgs e)
        {
            var folders = Enum.GetValues(typeof(Environment.SpecialFolder))
                .OfType<Environment.SpecialFolder>().OrderBy(f => f.ToString());

            int maxLength = folders.Max(f => f.ToString().Length);

            foreach (var folder in folders)
            {
                lstResultado.Items.Add(folder.ToString().PadRight(maxLength)  + "\t\t"  + Environment.GetFolderPath(folder));
            }
        }
    }
}
CSharp
 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim folders = [Enum].GetValues(GetType(Environment.SpecialFolder)).OfType(Of Environment.SpecialFolder)().OrderBy(Function(f) f.ToString())

        Dim maxLength As Integer = folders.Max(Function(f) f.ToString().Length)

        For Each folder In folders
            lstResultado.Items.Add(folder.ToString().PadRight(maxLength) & vbTab & vbTab & Environment.GetFolderPath(folder))
        Next
    End Sub
VB .NET

Executando o projeto iremos obter:

Pegue o projeto completo: PastasEspeciais_Csharp.zip e PastasEspeciais_VBNET.zip

1Ts 2:17 Nós, porém, irmãos, sendo privados de vós por algum tempo, de vista, mas não de coração, tanto mais procuramos com grande desejo ver o vosso rosto;

1Ts 2:18 pelo que quisemos ir ter convosco, pelo menos eu, Paulo, não somente uma vez, mas duas, e Satanás nos impediu.

1Ts 2:19 Porque, qual é a nossa esperança, ou gozo, ou coroa de glória, diante de nosso Senhor Jesus na sua vinda? Porventura não o sois vós?

1Ts 2:20 Na verdade vós sois a nossa glória e o nosso gozo.

Referências:


José Carlos Macoratti