tela de login - ajuda

03/10/2012

0

Boas.

Srs(a). antes de mais nada agradeço a atenção de todos.
Não sou programador, sou da área de suporte e infra. Entendo um pouco de ms-dos e vbscript...até hoje atendeu minhas necessidades.

Hoje tenho uma necessidade específica que o ms-dos e o vbscript não está atendendo em 100% esta necessidade. Por isso recorri ao C#

Fui atraz de algum conhecimento nesta linguagem e cheguei ate aqui:

Crei um WindowsForm em C# onde o mesmo tem como objetivo recuperar login e senha de domínio de usuários específicos para atravez desta efetuar mapeamentos de rede. Após o usuário digitar seu login e senha e clicar no botão "OK" este deve chamar um vbscript que contém os mapeamentos necessários para cada usuário, porém o login e senha do usuário que foi capturado pelo windowsform deve ser passado para o vbscript utilizar na autenticação do usuário.

Pq de td isso? tudo pq o "inputbox" do vbscript não mascara a senha do usuário. Segue o codigo que com a ajuda do visual studio eu crei:

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace MapNetworkDrive
{
public partial class NetworkCredential : Form
{
public NetworkCredential()
{
InitializeComponent();
}

private void button1Sair_Click(object sender, EventArgs e)
{
this.Close();

}

private void button1Ok_Click(object sender, EventArgs e)
{

aqui é o botão "OK", quando o usuário clicar neste botão, este deve chamar o vbscript com os mapeamentos de rede e passar as informações recuperadas na tela de login C# para o vbscript

}

private void textBox1Senha_TextChanged(object sender, EventArgs e)
{

aqui o usuário digita a sua senha de rede. Já esta mascarada pela propriedade "UseSystemPasswordChar"
não precisa ser criptografada.
}


private void textBox1Usuario_TextChanged(object sender, EventArgs e)
{

aqui o usuário digita seu login de dominio.
}

}
}

se alguém puder me ajudar, eu agradeço!

abç a todos
Ivan Silva

Ivan Silva

Responder

Posts

03/10/2012

Joel Rodrigues

Seu arquivo em VBScript está "esperando" parâmetros?
Para executar um arquivo externo você pode usar o método Process.Start("nomearquivo").
Seria isso?
Responder

03/10/2012

Joel Rodrigues

Seu arquivo em VBScript está "esperando" parâmetros?
Para executar um arquivo externo você pode usar o método Process.Start("nomearquivo").
Seria isso?
Responder

03/10/2012

Ivan Silva

Ola Joel

Seria isso sim.
Veja o script abaixo, o inputbox captura usuário e senha através das variaveis "strUsr" e "strPas" e na ultima linha é passado para o objNetwork.MapNetworkDrive as variáveis com os valores correspondentes a login e senha.
Isso me facilita pois tenho que mapear umas 12 unidades de rede de servidores diferentes, sendo assim não preciso digitar as informações de usuário e senha 12 vezes.

Então...gostaria de capturar as informações de login e senha com o C# e depois passar para o objNetwork.MapNetworkDrive no vbscript, não sei se isso é possivel?!?!

Dim objNetwork
Set objNetwork = WScript.CreateObject("WScript.Network")
strUsr = inputbox("DIGITE SEU USUÁRIO")
strPas = inputbox("DIGITE SUA SENHA")
strLocalDrive = "L:"
strRemoteShare = "\\server\share_name"

strUsr = "username"
strPas = "password"

objNetwork.MapNetworkDrive strLocalDrive, strRemoteShare, strUsr, strPas


obrigado.
Responder

04/10/2012

Ivan Silva

Boas

Consegui evoluir + um pouco. Pelo que pesquisei não vou conseguir passar o valor da variável capturada pelo form do c# para o vbscript, porém consigo incluir codigo vbscript dentro do form no c#. Adicionei uma biblioteca de referencia (Interop.IWshRuntimeLibrary.dll) e adicionei o seguinte codigo:

private void buttonOK_Click(object sender, EventArgs e)
{
string Usr = textBoxUser.Text;
string Pas = textBoxPassword.Text;

IWshRuntimeLibrary.IWshNetwork2.MapNetworkDrive("T:", @"\\server\share", System.Type.Missing, Usr, Pas);

}
Porém não consegui passar as informações do mapeamento para IWshRuntimeLibrary.IWshNetwork2.MapNetworkDrive
no que se refere aos itens [ref object] quando por exemplo eu coloco a variavel "Usr" onde esta armazenado o login do usuáro, ele me retorna uma serie de mensagens de erro:

The best overloaded method match for 'IWshRuntimeLibrary.IWshNetwork.MapNetworkDrive(string, string, ref object, ref object, ref object)' has some invalid arguments

Argument 3 must be passed with the 'ref' keyword

Argument 4: cannot convert from 'string' to 'ref object'

Argument 5: cannot convert from 'string' to 'ref object'

Obrigado pela ajuda
Responder

04/10/2012

Joel Rodrigues

Tente passar as variáveis por referência. Para isso, basta colocar a palavra "ref" antes do nome da variável na chamada do método. Exemplo: meuMetodo(ref var).
Responder

04/10/2012

Alisson Santos

esse erro é devido as referencias não estarem sendo passadas, execute a solicitação do colega acima, caso não resolva informar que verifico e respondo você.
Responder

04/10/2012

Ivan Silva

Ola Srs.

realmente não funcionou, continuo recebendo as mesmas mensagens de erro.

grato
Responder

05/10/2012

Joel Rodrigues

Como está o código atualmente, Ivan?
Responder

09/10/2012

Joel Rodrigues

Então você conseguiu resolver?
Responder

22/10/2012

Insper Pesquisa

Cara,

Já que decidiu optar pelo C#, efetua o mapeamento por ele mesmo, pois creio que será mais fácil.
Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar