Array
(
)

tela de login - ajuda

Ivan Silva
   - 03 out 2012

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

Joel Rodrigues
   - 03 out 2012

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

Joel Rodrigues
   - 03 out 2012

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

Ivan Silva
   - 03 out 2012

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.

Ivan Silva
   - 04 out 2012

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

Joel Rodrigues
   - 04 out 2012

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).

Alisson
|
MVP
Pontos: 3400
    04 out 2012

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ê.

Ivan Silva
   - 04 out 2012

Ola Srs.

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

grato

Joel Rodrigues
   - 05 out 2012

Como está o código atualmente, Ivan?

Joel Rodrigues
   - 09 out 2012

Então você conseguiu resolver?

Insper Pesquisa
   - 22 out 2012

Cara,

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