Fórum Como acesso \\cliente1\C$ no delphi? #236932
09/06/2004
0
Dae,
quero fazer um software de acesso aos computadores da minha rede, mas ainda não consegui começar, pois não sei que comando utilizar para acessar a rede windows. Tentei executar o explorer informando o diretório \\cliente1\C$ mas não funcionou. Só funciona se primeiro eu acessar este computador pelo windows explorer, e depois pelo delphi acessar um programa neste computador tipo:
ShellExecute(Handle, ´open´, ´explorer.exe \\cliente1\C$\teste.exe´,nil,nil, SW_SHOWMAXIMIZED);
Alguém tem uma idéia, Valeu,
Alessandro
quero fazer um software de acesso aos computadores da minha rede, mas ainda não consegui começar, pois não sei que comando utilizar para acessar a rede windows. Tentei executar o explorer informando o diretório \\cliente1\C$ mas não funcionou. Só funciona se primeiro eu acessar este computador pelo windows explorer, e depois pelo delphi acessar um programa neste computador tipo:
ShellExecute(Handle, ´open´, ´explorer.exe \\cliente1\C$\teste.exe´,nil,nil, SW_SHOWMAXIMIZED);
Alguém tem uma idéia, Valeu,
Alessandro
Aleott
Curtir tópico
+ 0
Responder
Posts
09/06/2004
Emerson Nascimento
adapte esta rotina:
// ativar um recurso de rede, mesmo que necessite de senha
var
    NRW: TNetResource;
    Retorno: cardinal;
    sMsg: string;
begin
    with NRW do
    begin
        dwType := RESOURCETYPE_DISK;
        lpLocalName := nil;
        lpRemoteName := ´\\200.154.108.38\logs\´;
        lpProvider := nil;
    end;
    Retorno := WNetAddConnection2( NRW, PChar(´senha´), PChar(´nome do usuario´), 0);
    case Retorno of
          ERROR_ACCESS_DENIED: sMsg :=´O acesso ao recurso de rede foi negado.´;
          ERROR_ALREADY_ASSIGNED: sMsg := ´O dispositivo especificado pelo lpLocalName já está conectado a um recurso de rede.´;
          ERROR_BAD_DEV_TYPE: sMsg := ´O tipo de dispositivo local e o tipo de recurso de rede são diferentes.´;
          ERROR_BAD_DEVICE: sMsg := ´O valor especificado em lpLocalName é inválido.´;
          ERROR_BAD_NET_NAME: sMsg := ´O valor especificado em lpRemoteName não é aceitável para nenhum provedor de recurso de
rede. O nome do recurso é inválido ou o recurso nomeado não pode ser localizado.´;
          ERROR_BAD_NETPATH: sMsg := ´Caminho de rede não encontrado´;
          ERROR_BAD_PROFILE: sMsg := ´O perfil de usuário está num formato incorreto.´;
          ERROR_BAD_PROVIDER: sMsg := ´O valor especificado em lpProvider difere de qualquer provedor.´;
          ERROR_BUSY: sMsg := ´O roteador ou o provedor estão ocupados (possivelmente inicializando). O chamada deve ser refeita.´;
          ERROR_CANCELLED: sMsg := ´A tentativa de fazer a conexão foi cancelada por um usuário num dos provedores de recurso da
rede ou por uma chamada ao recurso.´;
          ERROR_CANNOT_OPEN_PROFILE: sMsg := ´O sistema não pode abrir o perfil do usuário ou efetuar uma conexão permanente.´;
          ERROR_DEVICE_ALREADY_REMEMBERED: sMsg := ´Uma entrada para o dispositivo especificado em lpLocalName já está no perfil do
usuário.´;
          ERROR_DEVICE_IN_USE: sMsg := ´Dispositivo em uso por um processo ativo. Não é possível desconectar.´;
          ERROR_NOT_CONNECTED: sMsg := ´Não conectado ao recurso ou dispositivo especificado.´;
          ERROR_OPEN_FILES: sMsg := ´Os arquivos estão abertos no recurso e não foi especificado forçar a desconexão.´;
          ERROR_LOGON_FAILURE: sMsg := ´Nome ou senha de usuário incorreta.´;
          ERROR_EXTENDED_ERROR: sMsg := ´Ocorreu um erro específico de rede. Chame a função WNetGetLastError para obter a descrição
do erro.´;
          ERROR_INVALID_PASSWORD: sMsg := ´A senha informada é inválida.´;
          ERROR_NO_NET_OR_BAD_PATH: sMsg := ´Um componente da rede não foi inicializado ou o nome informado não pode ser
manipulado.´;
          ERROR_NO_NETWORK: sMsg := ´Não há rede presente.´;
          NO_ERROR: sMsg := ´Conexão efetuada´;
    else
          sMsg := ´Erro desconhecido (´+IntToStr(GetLastError())+´)´;
    end;
    Edit1.Text := ´0´;
    if Retorno = NO_ERROR then
    begin
        ShellTreeView1.Root := NRW.lpRemoteName
        Edit1.Text := IntToStr(ShellListView1.Items.Count-93);
    end
    else
        ShowMessage( sMsg );
end;
// ativar um recurso de rede, mesmo que necessite de senha
var
    NRW: TNetResource;
    Retorno: cardinal;
    sMsg: string;
begin
    with NRW do
    begin
        dwType := RESOURCETYPE_DISK;
        lpLocalName := nil;
        lpRemoteName := ´\\200.154.108.38\logs\´;
        lpProvider := nil;
    end;
    Retorno := WNetAddConnection2( NRW, PChar(´senha´), PChar(´nome do usuario´), 0);
    case Retorno of
          ERROR_ACCESS_DENIED: sMsg :=´O acesso ao recurso de rede foi negado.´;
          ERROR_ALREADY_ASSIGNED: sMsg := ´O dispositivo especificado pelo lpLocalName já está conectado a um recurso de rede.´;
          ERROR_BAD_DEV_TYPE: sMsg := ´O tipo de dispositivo local e o tipo de recurso de rede são diferentes.´;
          ERROR_BAD_DEVICE: sMsg := ´O valor especificado em lpLocalName é inválido.´;
          ERROR_BAD_NET_NAME: sMsg := ´O valor especificado em lpRemoteName não é aceitável para nenhum provedor de recurso de
rede. O nome do recurso é inválido ou o recurso nomeado não pode ser localizado.´;
          ERROR_BAD_NETPATH: sMsg := ´Caminho de rede não encontrado´;
          ERROR_BAD_PROFILE: sMsg := ´O perfil de usuário está num formato incorreto.´;
          ERROR_BAD_PROVIDER: sMsg := ´O valor especificado em lpProvider difere de qualquer provedor.´;
          ERROR_BUSY: sMsg := ´O roteador ou o provedor estão ocupados (possivelmente inicializando). O chamada deve ser refeita.´;
          ERROR_CANCELLED: sMsg := ´A tentativa de fazer a conexão foi cancelada por um usuário num dos provedores de recurso da
rede ou por uma chamada ao recurso.´;
          ERROR_CANNOT_OPEN_PROFILE: sMsg := ´O sistema não pode abrir o perfil do usuário ou efetuar uma conexão permanente.´;
          ERROR_DEVICE_ALREADY_REMEMBERED: sMsg := ´Uma entrada para o dispositivo especificado em lpLocalName já está no perfil do
usuário.´;
          ERROR_DEVICE_IN_USE: sMsg := ´Dispositivo em uso por um processo ativo. Não é possível desconectar.´;
          ERROR_NOT_CONNECTED: sMsg := ´Não conectado ao recurso ou dispositivo especificado.´;
          ERROR_OPEN_FILES: sMsg := ´Os arquivos estão abertos no recurso e não foi especificado forçar a desconexão.´;
          ERROR_LOGON_FAILURE: sMsg := ´Nome ou senha de usuário incorreta.´;
          ERROR_EXTENDED_ERROR: sMsg := ´Ocorreu um erro específico de rede. Chame a função WNetGetLastError para obter a descrição
do erro.´;
          ERROR_INVALID_PASSWORD: sMsg := ´A senha informada é inválida.´;
          ERROR_NO_NET_OR_BAD_PATH: sMsg := ´Um componente da rede não foi inicializado ou o nome informado não pode ser
manipulado.´;
          ERROR_NO_NETWORK: sMsg := ´Não há rede presente.´;
          NO_ERROR: sMsg := ´Conexão efetuada´;
    else
          sMsg := ´Erro desconhecido (´+IntToStr(GetLastError())+´)´;
    end;
    Edit1.Text := ´0´;
    if Retorno = NO_ERROR then
    begin
        ShellTreeView1.Root := NRW.lpRemoteName
        Edit1.Text := IntToStr(ShellListView1.Items.Count-93);
    end
    else
        ShowMessage( sMsg );
end;
Responder
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)