Página 1 de 1
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 02 Mar 2016 00:06
por rochinha
Amiguinhos,
Coisa louca aconteceu comigo estes dias. Nunca tive este problema no XP mas no Windows 7 em diante tá acontecendo o seguinte:
Tenho duas maquinas A(cliente) e B(servidora)
-Em B(servidora) compartilhei a pasta
sistema e dei todos as permissões possíveis.
-Em A(cliente) encontrei a maquina tanto via \\192.168.1.100\c quanto via \\SuperServer\c e fiz o mapeamento para as letras S: e Y: respectivamente.
-Em meu código coloquei:
Código: Selecionar todos
Set Default to &(cPathDados)
if file( "controle.dbf" )
?"encontrei com set default",curdir(),curdrive()
else
?"nao encontrei com set default",curdir(),curdrive()
endif
lCHDIR( cPathDados )
if file( "controle.dbf" )
?"encontrei com lCHDir",curdir(),curdrive()
else
?"nao encontrei com lCHDir",curdir(),curdrive()
endif
Me é retornado:
Código: Selecionar todos
nao encontrei com set default
\192.168.1.100\c\sistema
\
Em nenhum dos casos me retornou a letra S: ou Y: e os comandos de abertura estão falhando acusando
DOS ERROR 3.
Se alguém tiver uma idéia que não seja mudar de Harbour, ka, ka, ka, agradeço.
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 02 Mar 2016 07:18
por JoséQuintas
Criou o atalho pela pasta normal, e não pela pasta mapeada?
e/ou... chdir() só altera o diretório, e não a letra. faltou chdrive()
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 02 Mar 2016 08:30
por asimoes
Rochinha,
Pode usar também:
HB_CWD() que no harbour substitui o DIRCHANGE()
Está no changelog
added support for setting new working directory (and drive)
by HB_CWD( <cNewWD> )
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 03 Mar 2016 01:54
por rochinha
Amiguinhos,
Estou de volta para dar o respaldo e minha solução.
Rodei a internet inteira por 2 dias, caçando códigos, scripts em vb e java, php, pog e olhem onde fui parar,
mundo pequeno.
Bom o fato é que encontrei o que eu queria, que seria uma função que me retornasse a letra mapeada de um endereço UNC qualquer. Exemplo: Que letra foi mapeada para
\\servidor\c\sistema?
Pois bem, em minhas andanças encontrei:
Código: Selecionar todos
function GetDrvMapLetter( cPathName )
LOCAL cDrive, i, cServer
FOR i = 1 to 26
cDrive := chr(64+i) + ":"
cServer := NetRmtName( cDrive )
IF alltrim( cPathName ) == alltrim( cServer )
return cDrive
ENDIF
NEXT
return ""
Problema resolvido. Só que Não. Apesar de ter a biblioteca
ct.lib anexada na compilação a função
NetRmtName() não retornou nem um AI!.
Bom precisava resolver meu problema de rede que nem era meu e sim do Windows, então verificando alguns vbscripts montei um que me atendeu:
Código: Selecionar todos
function GetDrvMapLetter( strLocalDrive ) // UNC path
local aGetDrvMapLetter := {}
local objNetwork := TOLEAuto():New( "WScript.Network" )
local objDrives := objNetwork:EnumNetworkDrives()
local i := 0
If objDrives:Count > 0
do while i < objDrives:Count
if !empty( strLocalDrive )
if upper( objDrives:Item(i+1) ) = upper( strLocalDrive )
aGetDrvMapLetter := { objDrives:Item(i), objDrives:Item(i+1) }
exit
endIf
else
aadd( aGetDrvMapLetter, { objDrives:Item(i), objDrives:Item(i+1) } )
endif
i=i+2
enddo
EndIf
return aGetDrvMapLetter
Seu uso é simples:
Código: Selecionar todos
? len( GetDrvMapLetter( "\\lenovo-pc\_drive_e" ) )
? len( GetDrvMapLetter() )
? len( GetDrvMapLetter( "\\lenovo-pc\g" ) )
Lógico que esta é a versão 0.0000001 e pode melhorar, mas me quebrou o galho de saber a letra do mapeamento.
Quem tiver algo semelhante em Harbour pode indicar e acescentar ao tópico. Se estiver em
C também serve.
Fica a Dica.
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 03 Mar 2016 03:07
por alxsts
Olá!
Não acha interessante sugerir a criação desta funcionalidade ao grupo do Harbour e Viktor?
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 03 Mar 2016 11:07
por ANDRIL
Já tinha tentando através do NET USE saber os mapeamentos ativos no PC? Lendo o resultado dele daria para 'bolar' o retorno desejado, ou não?
Até+
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 03 Mar 2016 11:31
por rochinha
Amiguinhos,
Olá!
Não acha interessante sugerir a criação desta funcionalidade ao grupo do Harbour e Viktor?
Acho até que já exista. A minha fonte de pesquisa geralmente era baseada no site harbour.vouch.info que foi hackeado.
Já tinha tentando através do NET USE saber os mapeamentos ativos no PC? Lendo o resultado dele daria para 'bolar' o retorno desejado, ou não?
Até+
Nem me passou pela cabeça, pois a cada minuto era um telefonema de cliente dizendo, não tá entrando...
O problema de mapeamentos está relacionado as redes sob Windows 7 em diante, por causa da segurança a nível de usuário. Mapeamentos criados sob um usuário não são visíveis a outros e quando visíveis as restrições não permitem o bom executar dos acessos a .DBF que não trabalham bem sob endereços UNC. Tipo \\maquina\etc.
O Windows me pregou uma peça. Teve a paxorra de me dizer que eu estava digitando o nome de um executável errado ou inexistentes sendo que eu estava dentro da pasta do mesmo.
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 21 Mar 2016 21:25
por rbonotto
Tive um problema parecido, rosolvi de uma forma bem simples e um pouco no susto.
No pc cliente além do mapeamento faço a conexão da unidade de rede atribuindo sempre a letra S
Quem sabe...
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 21 Mar 2016 21:59
por rochinha
Amiguinhos,
Resolvi o problema com as funções que postei mas também de outra forma.
Ativei o Administrador escondido do Windows e pronto.
net user administrador active:yes
Deixei o usuário administrador ativo e os problemas com mapeamentos, etc, sumiram e o cliente parou de me pentelhar.
Lógico que isto libera a segurança, mas parte do meu serviço de suporte é a manutenção preventiva semanal.
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 23 Mar 2016 10:43
por HASA
:?
Cuidado com esse comando
net user administrador active:yes
em máquinas com Win/xp, se ela foi formatada sem criar a senha do administrador a mer... ta feita, não passaras da tela de login ok.
- CUIDADO....
:)Pos
HASA
Curdir() e CurDrive() na rede não retorna letra correta?
Enviado: 23 Mar 2016 12:49
por rochinha
Amiguinhos,
Cuidado com esse comando
ka, ka, ka.
Sei disto amiguinho, mas o cliente tava me enxendo o saco.