Ha algum tempo atras precisei de verificar dentro do meu programa se ele estava sendo iniciado com privilegios administrativos, a solucao e bem simples para esse caso !Maos na massa !using System;using System.Collections.Generic;using System.Linq;using System.Windows.Forms;using System.Security.Principal; namespace Admin{ static class Program { /// /// The main entry point for the application. /// [STAThread] static void Main() { try { //Ligando os Recursos Application.EnableVisualStyles(); Application.SetCompatibleTextRenderingDefault(false); //Istanciando e catando identidades WindowsIdentity Identidade = WindowsIdentity.GetCurrent(); WindowsPrincipal Principal = new WindowsPrincipal(Identidade); //Verificando if (!Principal.IsInRole(WindowsBuiltInRole.Administrator)) { MessageBox.Show("Usuario sem Privilegios administrativos"); Application.Exit(); } else { MessageBox.Show("Usuario com Privilegios administrativos"); Application.Run(new Form1()); } } catch (Exception ex) { if (ex != null) { MessageBox.Show("Erro ao verificar seus dados !"); } } } }}Esta ai... simples como a vida deve ser !e vamu que vamuuu !!! Existem algumas tecnicas que nao sao muito utilizadas no dia-a-dia dos programadores, e as vezes, sao os pequenos detalhes que influenciam na performance e na escrita de um bom codigo.Nos vamos passar algumas dessas tecnicas no decorrer das postagens, pois, temos plena certeza de que muitos se interessarao pelo assunto.Utilize os operadores de incremento (++) e decremento (--) em vez de um operador de atribuicao composta ao incrementar ou decrementar uma variavel por 1.Por exemplo, substitua:Contador = Contador + 1;ouContador += 1;porContador++;====================================================================================Bibliografia:Microsoft Visual C# 2008 / John Sharp==================================================================================== AndAlso O operador logico AndAlso, assim como o OrElse, implementa o chamado curto circuito. Como assim? Pois bem. Pra quem esta acostumado com C# pode nao saber, mas no VB.NET os operadores AND e OR fazem com que toda a expressao composta com operadores logicos seja avaliada. Ou seja, em uma expressao composta com AND, se a primeira expressao for igual a FALSE, o VB ira avaliar a segunda expressao. O que quero dizer e que, no caso de um AND, se a primeira expressao for igual a false, mesmo que a segunda seja verdadeira, aquele bloco de codigo condicional nao sera executado (lembre-se: False AND True e igual a false).Desta forma o operador AndAlso se torna mais pratico e rapido, pois no caso da primeira expressao ser falsa, nao ira avaliar a segunda expressao. Isto ira otimizar seu codigo, ainda mais se as expressoes adicionais forem uma chamada de funcao booleana.Outro ganho que se tem com este tipo de operador logico, e que voce nao precisara fazer IFs aninhados no caso da segunda expressao depender da primeira. Vou usar um exemplo pra explicar:Eu tenho uma variavel do tipo string, que recebe um valor qualquer. Se eu quiser saber se o caractere na quinta posicao da string e igual a determinado valor, terei que, por seguranca, fazer um IF perguntando se esta string possui ao menos cinco caracteres, para depois perguntar se aquele caractere e igual ao valor que estou avaliando. Se fizer uma expressao composta, conforme abaixo, sera gerada uma excecao, caso a variavel palavra nao possua cinco caracteres.If palavra.Length >= 5 And palavra(4) = "%" Then 'codigo End IfEntao, para nao gerar um erro de execucao e nao precisar usar IFs aninhados, faca da seguinte maneira:If palavra.Length >= 5 AndAlso palavra(4) = "%" Then