Remote desktop a Salamander
Remote desktop a Salamander
Dobrý den,
používám salamander ve verzi 2.51 a vysledoval jsem situace kdy dojde k zamrznutí Salamandera v době kdy jsem připojen na jiný počítač vzdálenou plochou a provádím kopírování dat na lokální disk přes RDP.
Dělám to tak, že na vzdáleném PC si vyberu soubor CTRL+C v exploreru, v dalším exploreru otevřu lokální disk a dám CTRL+V. V době kopírování je Salamander puštěný na lokálním PC nepoužitelný. Po dokončení kopírování jej opět možné používat.
používám salamander ve verzi 2.51 a vysledoval jsem situace kdy dojde k zamrznutí Salamandera v době kdy jsem připojen na jiný počítač vzdálenou plochou a provádím kopírování dat na lokální disk přes RDP.
Dělám to tak, že na vzdáleném PC si vyberu soubor CTRL+C v exploreru, v dalším exploreru otevřu lokální disk a dám CTRL+V. V době kopírování je Salamander puštěný na lokálním PC nepoužitelný. Po dokončení kopírování jej opět možné používat.
Potvrzuji toto chování, také se mi to děje. Navíc pokud v průběhu procesu kopírování "zapomenu" a přepnu se do Salamandera, který ja zatuhlý, tak se na vzdálené ploše objeví dialog "Kopírování...", na kterém je možnost Storno, ale i po vystornování se objevuje stále dokola. Buď musím počkat, až doběhne původní kopírování a progress bar tohoto dialogu "Kopírování...", anebo proces Salamandera odstřelit (stejně tak pomůže odstřelení procesu remote desktop, resp. odpojení od session)
Nešlo by na tento problém mrknout? Se vzdálenou plochou pracuji prakticky denně, a pokud kopíruji např. nějaký soubor 30 minut, tak velice snadno zapomenu na to, že se nesmím na běžící instanci AS přepnout nebo si novou pustit, protože zatuhne a způsobí vyhození dialogu i na vzdálené ploše (a nezbyde než přes task manager Salamander odstřelit, na vzdálené ploše dialog stornovat, a pustit si na PC zatím Explorer)
-
- ALTAP Staff
- Posts: 5229
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
-
- ALTAP Staff
- Posts: 5229
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Nedaří se mi problém reprodukovat. Na svých Windows XP (A) mám otevřený Remote Desktop na druhé Windows XP (B). V okně Remote Desktop vytvořím ve Windows (B) adresář C:\TEST, který naplním smetím. Šoupnu ho přes Ctrl+C na clipboard. Následně otevřu v Exploreru (stále v okně Remote Desktop) cestu \\tsclient\c\test, která vede na moje lokální Windows (A) a dám Ctrl+V.
Tím se začnou data kopírovat z Windows (B) na moje lokální Windows (A). Na lokálních Windows (A) během toho duplikuji v Salamanderu soubory pomocí Ctrl+C, Ctrl+V a vše chodí.
Popletl jsem nějaký krok?
Tím se začnou data kopírovat z Windows (B) na moje lokální Windows (A). Na lokálních Windows (A) během toho duplikuji v Salamanderu soubory pomocí Ctrl+C, Ctrl+V a vše chodí.
Popletl jsem nějaký krok?
Zkuste prosím ještě opačný postup (uploadovat z lokálního PC na vzdálenou plochu), nicméně mně se to děje i ve směru stahování který popisujete. Nevím, zda je ještě nějaký rozdíl v tom, že už při přihlašování na vzdálenou plochu dávám sdílet místní disk (mezi ostatními prostředky, tj. je tam trvale namapovaný) a na vzdálené ploše ho potom vidím na stejné úrovni jako lokální disky a do něj a z něj také kopíruji
-
- ALTAP Staff
- Posts: 5229
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
-
- ALTAP Staff
- Posts: 5229
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
To jsem přesně udělal, proto je UNC cesta \\tsclient\c\testMem wrote:Nevím, zda je ještě nějaký rozdíl v tom, že už při přihlašování na vzdálenou plochu dávám sdílet místní disk (mezi ostatními prostředky, tj. je tam trvale namapovaný) a na vzdálené ploše ho potom vidím na stejné úrovni jako lokální disky a do něj a z něj také kopíruji
"tsclient" je vyhrazený název pro sdílení lokálního stroje prostřednictvím Remote Desktopu.
U malých jsem to nezaregistroval, většinou právě přenáším jeden velký archiv (instalace, zálohy DB apod.), který se kopíruje několik minut. A jak jsem psal úplně poprvé, pokud proces nakonec doběhne, tak se Salamander zase "odsekne", takže je možné, že u malých to dělá také, ale doběhne to tak rychle, že to člověk nezaregistruje
-
- ALTAP Staff
- Posts: 5229
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Bingo Potvrzuji, vypnul jsem sdílení schránky, začal přenášet soubor na server, a Salamander zůstal plně aktivní, na vzdálené ploše se neobjevil žádný problém. Odpojil jsem se, znovu povolil sdílení schránky, připojil se a přenos souboru zopakoval. Při přepnutí zpět do Salamandera už došlo ke známému zatuhnutí
-
- ALTAP Staff
- Posts: 5229
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
-
- ALTAP Staff
- Posts: 5229
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Takže jsem se po pár hodinách testování zjistil následující.
V podstatě nejde vyloženě o chybu ani na jedné straně (Salamander a RDP), spíš o nepříjemnou souhru vlastností.
Salamander při aktivaci okna monitoruje Clipboard, aby mohl nastavit stavy tlačítek a položek v menu (pokud je například ve schránce textová cesta, bude v menu Salamandera zobrazeno Edit > Paste (Change Directory). Pokud je ve schránce odkaz na soubor, bude se položka jmenovat Edit > Paste. Součástí monitorování schránky je zavolání pDataObject->GetData().
A to je přesně okamžik, kdy si Remote Desktop začne "připravovat" data pro následný Paste. Pokud tedy v okně Remote Desktop vložíte do schránky odkaze (Edit > Copy z Explorera) na řekněme 1GB soubor, dojde v tento okamžik zřejmě k jeho nakopírování. To je ta fáze, kdy se zobrazí okénko Copying, Preparing paste information... na straně vzdálených Windows. Tato fáze může zabrat spoustu času, zejména pokud se data přenášejí po úzké lince na lokální počítač (to jsem nezkoumal, testuji proti lokálně běžícím XP ve VMware).
Situaci lze navodit také takto: pomocí Remote Desktop na vzdáleném počítači vložíte do schránky velký (např. 1GB) soubor pomocí příkazu Edit > Copy. Následně na lokálních XP v Exploreru dáte Edit > Paste. Během zmíněné přípravné fáze lokální Explorer zamrzne, stejně jako dočasně mrzne Salamander při aktivaci.
Po doběhnutí přípravné fáze se Salamander normálně rozjede a na příkaz Ctrl+V daný soubor nakopíruje do aktivního panelu.
Během zkoumání jsem narazil na věc, kterou považuji za chybu v Remote Desktop: při enumeraci formátů uložených ve schránce jsem našel zkrácené stringy:
Remote Desktop zjevně zařízne názvy na 16 znacích. Nepodařilo se mi na toto téma na webu nic najít. Každopádně bychom to mohli použít jako hack pro detekci, že jde data pocházející z Remote Desktop a nemáme je zkoumat, abychom nenastartovali přípravnou fázi kopírování na straně vzdálených Windows (i za cenu, že nám v Salamanderu nebudou sedět enablery). Ještě v kanceláři otestuji, jak se chová implementace Remote Desktop pod Windows Vista. Hack jsem tu na XP otestoval a zabral by.
Závěr: k problému dochází v případě, že na vzdálených Windows XP (na které přistupujeme pomocí Remote Desktopu) nakopírujeme do schránky odkaz na veliký soubor a na lokálních Windows aktivujeme Salamandera.
Provizorní řešení je nepoužívat pro kopírování takových velkých souborů schránku, ale nakopírovat je pomocí Salamandera ze vzdáleného počítače. Pomocí Shift+F7 a cesty \\tsclient\c lze ze vzdálených Windows přistupovat na lokální disk C, atd. Viz také http://forum.altap.cz/viewtopic.php?t=2781
V podstatě nejde vyloženě o chybu ani na jedné straně (Salamander a RDP), spíš o nepříjemnou souhru vlastností.
Salamander při aktivaci okna monitoruje Clipboard, aby mohl nastavit stavy tlačítek a položek v menu (pokud je například ve schránce textová cesta, bude v menu Salamandera zobrazeno Edit > Paste (Change Directory). Pokud je ve schránce odkaz na soubor, bude se položka jmenovat Edit > Paste. Součástí monitorování schránky je zavolání pDataObject->GetData().
A to je přesně okamžik, kdy si Remote Desktop začne "připravovat" data pro následný Paste. Pokud tedy v okně Remote Desktop vložíte do schránky odkaze (Edit > Copy z Explorera) na řekněme 1GB soubor, dojde v tento okamžik zřejmě k jeho nakopírování. To je ta fáze, kdy se zobrazí okénko Copying, Preparing paste information... na straně vzdálených Windows. Tato fáze může zabrat spoustu času, zejména pokud se data přenášejí po úzké lince na lokální počítač (to jsem nezkoumal, testuji proti lokálně běžícím XP ve VMware).
Situaci lze navodit také takto: pomocí Remote Desktop na vzdáleném počítači vložíte do schránky velký (např. 1GB) soubor pomocí příkazu Edit > Copy. Následně na lokálních XP v Exploreru dáte Edit > Paste. Během zmíněné přípravné fáze lokální Explorer zamrzne, stejně jako dočasně mrzne Salamander při aktivaci.
Po doběhnutí přípravné fáze se Salamander normálně rozjede a na příkaz Ctrl+V daný soubor nakopíruje do aktivního panelu.
Během zkoumání jsem narazil na věc, kterou považuji za chybu v Remote Desktop: při enumeraci formátů uložených ve schránce jsem našel zkrácené stringy:
Code: Select all
"Shell IDList Arr" místo "Shell IDList Array" (CFSTR_SHELLIDLIST)
"Preferred DropEf" místo "Preferred DropEffect" (CFSTR_PREFERREDDROPEFFECT)
"Shell Object Off" místo "Shell Object Offsets" (CFSTR_SHELLIDLISTOFFSET)
(viz Microsoft SDK\include\ShlObj.h)
Závěr: k problému dochází v případě, že na vzdálených Windows XP (na které přistupujeme pomocí Remote Desktopu) nakopírujeme do schránky odkaz na veliký soubor a na lokálních Windows aktivujeme Salamandera.
Provizorní řešení je nepoužívat pro kopírování takových velkých souborů schránku, ale nakopírovat je pomocí Salamandera ze vzdáleného počítače. Pomocí Shift+F7 a cesty \\tsclient\c lze ze vzdálených Windows přistupovat na lokální disk C, atd. Viz také http://forum.altap.cz/viewtopic.php?t=2781