woodywoo Opublikowano 5 Października 2010 Zgłoś Udostępnij Opublikowano 5 Października 2010 Witam i zwracam się z zapytaniem o pomoc odnośnie mojego problemu. Zacznę może od tego, że podobne tematy o PL znakach w wierszu poleceń widziałem, próbowałem modyfikacji rejestru, zmiany w panelu sterowania itp. Mój problem jest jednak trochę inny i poradzić sobie z nim nie mogę. Gdy odpalę cmd i użyję polecenia chcp - niby wszystko jest okej: C:\Users\Paweł>chcp Aktywna strona kodowa: 852 ALE. Używam też windowsowej usługi serwera telnetu (tlntsvr.exe) do zdalnego łączenia się z moim komputerem. I cokolwiek bym nie robił, gdy łączę się z komputerem zdalnie z komputera innego, terminal uparcie pokazuje: C:\Users\Pawe>chcp Aktywna strona kodowa: 1250 W zasadzie mógłbym po każdym połączeniu użyć chcp 852, problem jest jednak w tym, że samo ustanowienie połączenia jest kłopotliwe za sprawą polskiego znaku (jak widać) w loginie. Muszę najpierw przestawiać kodowanie terminala na 1250, zalogować się, użyć chcp 852 i przywrócić ustawienia terminala. Znalazłem coś takiego: http://technet.microsoft.com/en-us/library/cc728323%28WS.10%29.aspx to chyba troszkę dotyka problemu, ale dotyczy win2k3 a nie mej wisty ulubionej. A w ogóle idealnie by było, gdyby się dało ustawić tę stronę kodową nie tyle na 852 co nawet - jeszcze lepiej - na UTF-8. Gdzieś tam w necie wyszperałem, że chcp 65001 odpowiada UTF-8. Prawda to? Moje testy na szybko zrobione zdają się potwierdzać, gdy w terminalu mam ustawione utf8 i w oknie zdalnego połączenia użyję chcp 65001 wszystko super współgra. Tylko trochę się zraziłem gdy zmodyfikowałem klucz rejestru HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\CodePage\OEMCP na 65001 i po restarcie komputera przywitał mnie bluescreen... więc nie wiem jak to z tym 65001, czy to prawidłowa wartość czy nie. PS. Pisałem już na SE ale nie zgadniecie co - tam śmierdzi trupem. :| A to tutaj się cały dobytek intelektualny przeniósł widzę I bardzo dobrze się stało, jeśli tu ma być lepsza atmosfera Odnośnik do komentarza
barblask Opublikowano 5 Października 2010 Zgłoś Udostępnij Opublikowano 5 Października 2010 852 dosowski standard cp-852 1250 windowsowski standard cp-1250 65001 UTF-8 nie możesz zrobić *.bat który by odpowiednio odpalał Tobie konsolę? Windows pewnie się tobie sypie bo krzaczy mu się konsola przy kodowaniu innym niż dosowskim BTW. zastanawiał się ktoś dla czego konsola używa cp-852, gdy reszta windowsa cp-1250 (pomijając już fakt istnienia latin2 - standardu polskiego kodowania) eh ten m$ Odnośnik do komentarza
DawidS28 Opublikowano 5 Października 2010 Zgłoś Udostępnij Opublikowano 5 Października 2010 BTW. zastanawiał się ktoś dla czego konsola używa cp-852, gdy reszta windowsa cp-1250 (pomijając już fakt istnienia latin2 - standardu polskiego kodowania) Strona kodowa 852 powstała zdecydowanie wcześniej, chyba jeszcze na podstawie 437 od IBM... From WikipediaIBM PC (OEM) code pages These code pages were designed to be compatible with text modes provided by graphics adapters, including VGA compatible text mode, that were used with MS-DOS and its clones. This limited code pages to 256 points, which often include box-drawing characters. Since the original IBM PC code page (number 437) was not really designed for international use, several incompatible variants emerged. Microsoft refers to these as the OEM code pages. Potem Microsoft utworzył sobie jeszcze strony kodowe ANSI (125x) i inne (właśnie 65001, która jest windowsową implementacją Unicode). Problem w tym, że te strony kodowe nie były dostępne w DOS-ie i z DOS-em zgodne nie były, a w celu zachowania wstecznej kompatybilności w cmd.exe zostały właśnie stare strony kodowe DOS. Z własnych doświadczeń widzę, że DOS-a (i cmd) do wykorzystywania 65001 namówić się nie da, natomiast jeśli przekierujemy sobie dojścia do pliku .txt i potem to odtworzymy Notatnikiem to wszystko się pięknie wyświetli (tak samo przy Windows-1252, a przy 852 w notatniku będą krzaczki). Na odwrót jest w dosowskim EDIT - dobrze wyświetlają się dokumenty wykorzystujące cp-852, reszta się sypie. Więcej: http://ja5kier.blogspot.com/2007/05/utf-8-i-cmdexe.html http://msdn.microsoft.com/en-us/library/dd317756%28VS.85%29.aspx Wnioski z tego: - dla polskich stron WWW - ISO-8859-2 - dla DOS-a - 852 - dla Windowsa - 1252 - dla intersystemowych zastosowań - Unicode Szanse, żeby to się kiedyś unormowało: praktycznie zerowe, dopóki nie zniknie Wiersz poleceń. -------------------------------------------------------------------------------------------------------------------- Z Telnetem jest jeszcze inny problem, systemy od Microsoftu interpretują inaczej znak końca wiersza, niż Uniksy i pochodne (Linux). Te ostatnie wysyłają znak (Line Feed), natomiast Windows i DOS dodaje przed nim dodatkowo znak (Carriage Return). Telnet ma sam dokonywać konwersji dla wybranego systemu, natomiast warto o tym pamiętać. Odnośnik do komentarza
woodywoo Opublikowano 5 Października 2010 Autor Zgłoś Udostępnij Opublikowano 5 Października 2010 nie możesz zrobić *.bat który by odpowiednio odpalał Tobie konsolę? Nie mogę - bo przecież nie zmuszę żadnego .bat, żeby odpalał się w momencie gdy nadchodzi zdalne połączenie. I to w dodatku musiałby odpalić się w oknie reprezentującym tę zdalną sesję. Mało tego - jeszcze przed zalogowaniem by to musiało się stać. Problem w tym, że te strony kodowe nie były dostępne w DOS-ie i z DOS-em zgodne nie były, a w celu zachowania wstecznej kompatybilności w cmd.exe zostały właśnie stare strony kodowe DOS. DOS tak naprawdę niewiele mnie interesuje, nie interesuje mnie też raczej kompatybilność wsteczna. Oby tylko działało prawidłowo połączenie przez telnet do cmd - nawet kosztem braku kompatybilności z dziadkiem DOSem. Z Telnetem jest jeszcze inny problem, systemy od Microsoftu interpretują inaczej znak końca wiersza, niż Uniksy i pochodne (Linux). Te ostatnie wysyłają znak <LF> (Line Feed), natomiast Windows i DOS dodaje przed nim dodatkowo znak <CR> (Carriage Return). Telnet ma sam dokonywać konwersji dla wybranego systemu, natomiast warto o tym pamiętać. Do tego akurat przywykłem bo telnet/ssh stosuję od lat na przeróżnych systemach i jeśli się dobrze klienta telnetu ustawi (w moim przypadku SecureCRT - polecam) to nie jest to problemem. Natomiast nadal nie dotykamy sedna sprawy Czyli domyślnej strony kodowej dla sesji telnet. Odnośnik do komentarza
DawidS28 Opublikowano 5 Października 2010 Zgłoś Udostępnij Opublikowano 5 Października 2010 DOS tak naprawdę niewiele mnie interesuje, nie interesuje mnie też raczej kompatybilność wsteczna. Oby tylko działało prawidłowo połączenie przez telnet do cmd - nawet kosztem braku kompatybilności z dziadkiem DOSem. Wiem, ale Microsoft to jednak interesuje. CMD powstał już w czasach istnienia Windowsów. Natomiast nadal nie dotykamy sedna sprawy Czyli domyślnej strony kodowej dla sesji telnet. A nie łatwiej Ci po prostu wywalić to "ł" z loginu? Każda nie-łacińska literka prędzej czy później zacznie powodować problemy, niekiedy w zupełnie niespodziewanych okolicznościach. http://serverfault.com/questions/67037/per-user-login-cmd-in-vista Może to Ci coś pomoże, natomiast powoli wkraczam na nieznane mi tereny... Odnośnik do komentarza
woodywoo Opublikowano 5 Października 2010 Autor Zgłoś Udostępnij Opublikowano 5 Października 2010 A nie łatwiej Ci po prostu wywalić to "ł" z loginu? Każda nie-łacińska literka prędzej czy później zacznie powodować problemy, niekiedy w zupełnie niespodziewanych okolicznościach. Ze zmianą nazwy konta (zwłaszcza takiego funkcjonującego bardzo dłuuugo) też wcale nie jest lepiej i może to mieć różne przykre konsekwencje. Przypominam, że to jest to samo konto co domyślne, wykorzystywane do logowania windows Właściwie to nawet nie wiem czy to jest możliwe do wykonania jakimś prostym sposobem. Jeśli zmieniam przez panel sterowania -> konta użytkowników -> zmień swoją nazwę konta, to dzieją się jakieś cuda niewidy. Folder w Users nadal ma nazwę "Paweł" z "ł", telnet nadal wymaga logowania z "ł", na ekranie logowania Visty (tam gdzie jest prośba o wciśnięcie ctrl+alt+del) jestem oznaczony jako - uwaga - "Pawel (Paweł)". Dopiero później gdzieniegdzie pojawia się wersja "Pawel". Podejrzewam, że raz utworzone konto ma nazwę niezmienną, można zmienić tylko nazwę wyświetlaną. No chyba, że jakieś sposoby typu "force" istnieją niedostępne w standardowym panelu sterowania. Tworzenie konta od nowa to zdecydowanie nie dla mnie, przyzwyczajam się do środowiska, straszliwie je personalizuję (nie mylić z tray-owcami, upiększaczo-upierdliwcami) i przesiadek nie lubię Że już o formatowaniu nie wspomnę - zapomniałem prawie jak format wygląda. Poza tym zmiana nazwy konta to tylko leczenie objawowe, a ono jest fuj. Nadal zostaje potrzeba uruchamiania po każdym logowaniu odpowiedniego polecenia chcp... bo w czasie pracy z terminalem też chciałbym jakoś kulturalnie to kodowanie mieć ustawione. http://serverfault.com/questions/67037/per-user-login-cmd-in-vista Może to Ci coś pomoże, natomiast powoli wkraczam na nieznane mi tereny... To też zdaje się jest wykonywane dopiero po autoryzacji więc nie pomoże. Nie da się wykonać jakiegokolwiek kodu czy polecenia przed zalogowaniem, bo mógłby go wykonać każdy kto próbuje ustanowić połączenie Odnośnik do komentarza
DawidS28 Opublikowano 5 Października 2010 Zgłoś Udostępnij Opublikowano 5 Października 2010 A lusrmgr.msc - zarządzanie użytkownikami (o ile masz Vistę Business albo Ultimate). Ostatni raz nazwy kont zmieniałem na Windows Server 2003 tą właśnie drogą, nie zauważyłem później żadnych problemów (jak się człowiek kilka razy na prawie 200 kont pomyli to jeszcze nie jest źle ). Było tam też coś takiego, jak login dla systemów starszych od Windows 2000, dziwne, że tego na Viście nie ma, jak wielu innych rzeczy... Ażeby zmienić nazwę folderu profilu musisz być zalogowany na innym koncie administracyjnym niż jesteś albo użyć płyty bootowalnej 1.Logujesz się na inne konto administracyjne albo na konto wbudowanego Administratora (tylko najpierw musisz konto Administratora odblokować np. w lusrmgmt.msc) i zmieniasz nazwę danego folderu profilu na taką jak nazwa konta 2.Poszukaj w kluczu HKLM\Software\Microsoft\Windows NT\CurrentVersion\ProfileList podklucze z numerami odnoszącymi się do tego modyfikowanego profilu i popraw to (rysunek) to co jest w rejestrze musi się zgadzać ze stanem faktycznym na dysku Oczywiście to samo (jak chcesz) można wykonać bootując płytę DVD Visty albo LiveCD i zdalnie to wszystko wykonać... Odnośnik do komentarza
woodywoo Opublikowano 5 Października 2010 Autor Zgłoś Udostępnij Opublikowano 5 Października 2010 Niestety - Home Premium. Poza tym, naprawdę nie chcę tej nazwy zmieniać bo intuicyjnie wydaje mi się to rozwiązaniem dość inwazyjnym o nieprzewidzianych skutkach dla już zainstalowanych aplikacji. O ile w ogóle można mówić, że to jest rozwiązanie problemu domyślnej strony kodowej cmd/telnet Odnośnik do komentarza
Flavius Opublikowano 7 Października 2010 Zgłoś Udostępnij Opublikowano 7 Października 2010 Niestety - Home Premium. No to komenda net user Administrator /active:yes Poza tym, naprawdę nie chcę tej nazwy zmieniać bo intuicyjnie wydaje mi się to rozwiązaniem dość inwazyjnym o nieprzewidzianych skutkach dla już zainstalowanych aplikacji. Mylisz się.Dla aplikacji (pewnie ci chodzi o informacje o rejestracji programów) interesuje tylko SID użytkownika dla którego dokonano rejestrację.Ta procedura nie zmienia SID użytkownika.Rejestr systemu operuje wyłącznie SID użytkownika,rzeczywiste czy wyświetlane nazwy konta rejestr nie operuje poza gałęzią SAM ale do tej gałęzi żadne zainstalowane aplikacje czy łaty nie mają dostępu. Odnośnik do komentarza
woodywoo Opublikowano 11 Października 2010 Autor Zgłoś Udostępnij Opublikowano 11 Października 2010 Mylisz się.Dla aplikacji (pewnie ci chodzi o informacje o rejestracji programów) interesuje tylko SID użytkownika dla którego dokonano rejestrację. A to nie zależy od tego jak sobie jakiś programista aplikację zaprogramował? Jeden zrobi tak, drugi inaczej. Chodzi też o przeróżne ścieżki dostępu ustawiane w programach, na przykład "pliki konfiguracyjne przechowuj w ...", "dane profilu przechowuj w ...", "save'y gry przechowuj w ..." i tym podobne. Jak są użyte zmienne systemowe to pół bidy, a jak nie są to trzeba podmieniać ręcznie. No ale idąc dalej - to rozwiązuje problem logowania. A co z kodowaniem samym w sobie? Pozostaje mi tylko wpisywać po każdym połączeniu ręcznie chcp 852 / chcp 65001? Naprawdę nigdzie nie da się tego ustawić? Na chłopski rozum - jeśli za każdym razem jest tam 1250 a nie przypuśćmy 0, NULL, czy losowa wartość, to znaczy, że gdzieś ta wartość musi być przechowywana Odnośnik do komentarza
woodywoo Opublikowano 29 Października 2010 Autor Zgłoś Udostępnij Opublikowano 29 Października 2010 Buuu, naprawdę nikt nie zna rozwiązania? Przepraszam za doublepost i upierdliwość, ale dla osoby której codziennym narzędziem pracy są terminale wszelakie, rzecz jest bardzo irytująca Odnośnik do komentarza
DawidS28 Opublikowano 29 Października 2010 Zgłoś Udostępnij Opublikowano 29 Października 2010 (edytowane) Nie wiem, nie znam się, nie orientuję się... zarobiony nie jestem IMHO najprościej byłoby pozbyć się tej polskiej literki w loginie, nie od wczoraj wiadomo, że to tylko problemy stwarza. Jak dla mnie, zmiana nazwy użytkownika nie wywoła problemów, nazwa katalogu usera nie zmienia się (?). Edytowane 21 Lutego 2011 przez picasso 21.02.2011 - Temat zostaje zamknięty. Wygasła jego żywotność ustalona zasadami. //picasso Odnośnik do komentarza
Rekomendowane odpowiedzi