Arquivos

Posts Tagged ‘c’

Efetuando upload de arquivos com C# no IIS

Segue Pseudo Código para efetuar upload de arquivos com c# no IIS:

if (this.FileUpload1.HasFile)
{
this.FileUpload1.SaveAs(Server.MapPath(“~\\pastaX\\pastay\\” + this.FileUpload1.FileName));
}

Enjoy!

Categorias.net, C# Tags:, , ,

C# – Mudar cursor de Mouse para Ampulheta

Sempre esqueço como alterar o cursor do mouse para ampulheta! Então, registrando:

this.Cursor = Cursors.WaitCursor;

…… Processo

this.Cursor = Cursors.Default;

Enjoy!

CategoriasC# Tags:, ,

C# buscando usuários no AD

Existe muito material na Internet sobre como efetuar uma busca no Active Directory (AD) utilizando C#, porém, em poucos lugares encontrei como efetuar um filtro por mais que uma condição.

No exemplo abaixo, estou pesquisando usuários (user), do tipo pessoas (person) e que sejam membros do grupo Office365.

Veja só:

ds.Filter = string.Format("(&(&({0}) {1}) {2})", "objectClass=user", "(objectCategory=person)", "(memberOf=CN=Office365,DC=infopass,DC=tix11,DC=com)");

O filtro ficará assim:

(&(& (objectClass=user) (objectCategory=person) (memberOf=CN=Office365,DC=infopass,DC=tix11,DC=com)) 

Isso quer dizer em “portugol”:

objectClass=user E objectCategory=person E memberOf=CN=Office365,DC=infopass,DC=tix11,DC=com

Se precisar usar um OU, use | ao invés de &.

Um pequeno trecho do código para ajudar mais:

DirectoryEntry de = GetDirectoryEntry();
DirectoryEntry rag = null;
object obj = de.NativeObject;
DirectorySearcher ds = new DirectorySearcher(de);
ds.Filter = string.Format("(&(&({0}) {1}) {2})", "objectClass=user", "(objectCategory=person)", "(memberOf=CN=Office365,DC=infopass,DC=tix11,DC=com)");
ds.SearchScope = SearchScope.Subtree;
SearchResultCollection results = ds.FindAll();
Console.WriteLine("Usuarios encontrados no grupo Office365 - " + results.Count);
....
foreach (SearchResult result in results)
{
    rag = (DirectoryEntry)result.GetDirectoryEntry();
....

Enjoy!

CategoriasC# Tags:, , , , ,

Alterar proprierades de usuário do AD com c++

dezembro 16, 2013 2 comentários

Segue um código que deve ser adaptado, o mesmo serve para alterar as propriedades de um usuário do AD com c++.

Enjoy!

<br />try{<br />String^ __path = "LDAP://Adatum.com/CN=USERS,DC=Adatum,DC=com";<br />DirectoryEntry^ parentEntry = gcnew    DirectoryEntry(__path );<br />DirectorySearcher^ search = gcnew DirectorySearcher(parentEntry);<br />search-&gt;Filter = "(SAMAccountName=fulano)";<br />SearchResult^ result = search-&gt;FindOne();<br />DirectoryEntry^ user = result-&gt;GetDirectoryEntry();<br />user-&gt;Properties["userAccountControl"]-&gt;Value = "514";<br />user-&gt;CommitChanges();<br /><br />} catch (Exception ^err) {<br />//(err-&gt;Message);<br />}<br />
Categorias.net, C#, C++ Tags:, , ,

Rodando um comando PowerShell com Visual C++

novembro 22, 2013 1 comentário

Segue um código que pode ser útil, efetuando adaptações necessárias:

try{
this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + "\nHabilitando mailbox para " + this-&gt;userTxt-&gt;Text;
			
RunspaceConfiguration ^runspaceConfig = RunspaceConfiguration::Create();
Runspace ^runspace = RunspaceFactory::CreateRunspace(runspaceConfig);
// open it
runspace-&gt;Open();

Pipeline ^pipeline = runspace-&gt;CreatePipeline();
// este é o script que vou executar, repare que é um do Exchange
String ^scriptText2007 = "C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\PowerShell.exe -command \". 'C:\\Program Files\\Microsoft\\Exchange Server\\V14\\bin\\RemoteExchange.ps1'; Connect-ExchangeServer -auto; Enable-Mailbox -Identity 'corprd.bradesco.com.br/Users/" + this-&gt;userTxt-&gt;Text + "' -Alias '" + this-&gt;userTxt-&gt;Text + "'\"";
//String ^scriptText2007 = C:\\bats\\teste2.ps1;

pipeline-&gt;Commands-&gt;AddScript(scriptText2007);

Collection ^results = pipeline-&gt;Invoke();
			
runspace-&gt;Close();

StringBuilder^ stringBuilder = gcnew StringBuilder(); 
for (int i = 0; i Count; i++ ) { 
    stringBuilder-&gt;AppendLine(results[i]-&gt;ToString());
}
this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + "\nParseou resultados";
IntPtr result = Marshal::StringToBSTR(results-&gt;ToString());
String ^answer= stringBuilder-&gt;ToString(); 
IntPtr ptr = Runtime::InteropServices::Marshal::StringToBSTR(answer);
this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + answer;

} catch (Exception ^err) {
			this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + "\nERRO Habilitar MailBox";
			IntPtr msg = Marshal::StringToBSTR(err-&gt;Message);
			this-&gt;outLog-&gt;Text = this-&gt;outLog-&gt;Text + err-&gt;Message;
}

Enjoy!

CategoriasC++, PowerShell, Windows Tags:,

Validar um usuário no Active Directory no C#

Tive a necessidade de autenticar um usuário em um Active Directory a partir de uma aplicação Web C#. Meu código ficou assim:


bool valid = false;
try
{
  // create a "principal context" - e.g. your domain (could be machine, too)
  using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, "SEU DOMINIO"))
  {
    // validate the credentials
    valid = pc.ValidateCredentials(username, password);
  }
}
catch (Exception ex)
{
  WriteLog("Erro de acesso ao DB: " + ex.Message);
}
return valid;

Simples e funcional.

Categorias.net Tags:, , , , ,

Iniciando um processo no C# com outro usuário

Estava precisando executar um comando no Windows utilizando rundll32 como um usuário diferente do ligado na estação, e encontramos dois ótimos links bem direto ao ponto. Aí vão :

http://stackoverflow.com/questions/4624113/how-to-process-start-with-impersonated-domain-user

http://weblogs.asp.net/hernandl/archive/2005/12/02/startprocessasuser.aspx

Enjoy

CategoriasC# Tags:
Seguir

Obtenha todo post novo entregue na sua caixa de entrada.

Junte-se a 153 outros seguidores