Skocz do zawartości

Kłopoty z kopiowaniem na pendrive


kitek

Rekomendowane odpowiedzi

Pomoc jest darmowa, ale proszę rozważ przekazanie dotacji na utrzymanie serwisu: klik.

W sumie miałem podobny problem z podobnym penem, ale nie jestem pewien który z zabiegów pomógł. Pierwszym było usunięcie i ponowne założenie nowej partycji (robiłem to z poziomu GNU/Linuksa, ale nie powinno tu być różnicy). Drugą (a właściwie pierwszą) było wymuszenie zamontowania partycji, co zmienia flagę NTFS mówiącą, czy system plików jest w użyciu. Podobny efekt powinno dać zapuszczenie chkdska.

Odnośnik do komentarza

zapisz sobie jako skrypt VBS (np devman.vbs) poniższy ciąg:

Set objShell = CreateObject("WSCript.shell")

objShell.Run ("%comspec% /c Set devmgr_show_nonpresent_devices=1 & Devmgmt.msc"),0,false

Set objShell = Nothing

WScript.Quit

 

On odpali ci menedżera urządzeń w trybie w którym będziesz miał widoczne wszystkie zainstalowane w systemie urządzenia a nie tylko te które systemowi udało się uruchomić.

Aby system je ujawnił w menedżerze trzeba jeszcze wybrać - "widok/pokaż ukryte urządzenia"

 

Sprawdź czy nie masz wpisów dla uniwersalnie magistrali szeregowej typu "unknown devices" czy "nieznane urządzenie", jeżeli są spróbuj je wyczyścić.

Niestety prawdopodobnie bez ingerencji w rejestrze się nie obędzie.

Zainteresuj się gałęziami :

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USB

 

Pierwsza odpowiada typowo za urządzenia pamięci masowej druga ogólnie za urządzenia USB.

Niestety usuwanie wpisów przez menedżera urządzeń nie koniecznie usuwa wpisy z tych dwóch gałęzi co zwłaszcza w przypadku błędnie wykrytego kontrolera skutkuje różnymi problemami (głównie z czytnikami kart).

Aby ingerencja w tych kluczach była możliwa trzeba też odpowiednio ustawić uprawnienia do pod kluczy które w tych gałęziach są przypisane do wirtualnego użytkownika trustedinstaller.

Oczywiście samo grzebanie w rejestrze jest potencjalnie groźne dla stabilności i spójności systemy więc wypada zrobić backup choćby tych gałęzi w które chcemy ingerować.

Dodatkowo jeśli mamy klawiaturę i myszkę USB to racze nie usuwajmy całej gałęzi ...Enum\USB bo jeśli po restarcie system nie znajdzie samodzielnie sterowników to będzie kłopot popchnąć go dalej.:)

 

Możesz też spojrzeć (usunąć wpisy) do gałęzi:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\usb***

zwłaszcza usbstor i wyrzucić z pod klucza ENUM pid tego upierdliwego pena.

 

 

Spotkałem się też z komputerami w których żadne zabiegi i egzorcyzmy nie pomogły w przypadku problemów z urządzeniami USB i trzeba było przeinstalować system co zawsze jest pewną porażką, ale dotyczyło to niewielkiej ilości maszyn i zawsze problem powodował czytnik kart a komputerów z racji wykonywanego zawodu przerzucam co najmniej kilkaset miesięcznie.

 

pzdr

Odnośnik do komentarza

W międzyczasie skrobłem mały skrypcik który ułatwi "przejmowanie kontroli" nad kluczami

własność.vbs:

Set objDictionary = CreateObject("Scripting.Dictionary")

 

Set objRegistry = GetObject("winmgmts:\\.\root\default:StdRegProv")

 

Set objShell = CreateObject("WSCript.shell")

 

' Poniżej podajemy klucz na którym będziemy operować &H80000002 oznacza HKLM a np. &H80000001 HKCU

' Tu w przykładzie jest to klucz HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR a właściwie wszystkie jego pod klucze

 

strKeyPath = "SYSTEM\CurrentControlSet\Enum\USBSTOR"

strhiv = &H80000002

 

enumSubkeys strhiv ,strKeyPath

 

objDictionary.Add strKeyPath,strKeyPath

 

'W stringach poniżej wstawiony został użytkownik wszyscy ale można ustawić innego usera (jak mniemam)

struser = "wszyscy"

 

For Each strkey in objDictionary.items

strkomendaown = objShell.currentdirectory & "\psexec.exe -s -w " & objShell.currentdirectory & " " & objShell.currentdirectory &"\setacl.exe -on " &chr(34)&"HKLM\" & Replace(strKey,vbCr,"")&chr(34)& " -ot reg -rec yes -actn ace -ace "&chr(34)&"n:"& struser &";p:full"&chr(34)

strkomendaace = objShell.currentdirectory & "\psexec.exe -s -w " & objShell.currentdirectory & " " & objShell.currentdirectory &"\setacl.exe -on " &chr(34)&"HKLM\" & Replace(strKey,vbCr,"")&chr(34)& " -ot reg -rec yes -actn setowner -ownr "&chr(34)&"n:"& struser &chr(34)

strkeys = strkeys & strkomendaown & vbCrLf & strkomendaace &vbCrLf

Next

 

Set objFSO = CreateObject("Scripting.FileSystemObject")

Set objFile = objFSO.CreateTextFile("klucze.bat", True)

 

arrkeys = split(strkeys,vbcrlf)

 

'Tutaj wywracamy nasz plik do góry nogami (aby uprawnienia nadawać w odpowiedniej kolejności)

For i = Ubound(arrkeys ) to LBound(arrkeys ) Step -1

objFile.WriteLine arrkeys(i)

Next

 

objFile.Close

 

WScript.Quit

 

Sub enumSubkeys(HK, strKeyPath)

objRegistry.EnumKey HK, strKeyPath, arrSubkeys

 

If IsArray(arrSubkeys) Then

For Each strSubkey In arrSubkeys

enumSubkeys HK, strKeyPath & "\" & strSubkey

objDictionary.Add strKeyPath & "\" & strSubkey,strKeyPath & "\" & strSubkey & vbCr

Next

End If

 

End Sub

 

Do zadziałania potrzebuje programiku setacl.exe:

Strona programu

który umieszczamy w tym samym katalogu co skrypt

 

Oczywiście skrypt jest dość uniwersalny i może służyć do przejęcia na własność dowolnych pod kluczy rejestru np celem ich zmiany lub skasowania

Jak znów będzie mi się nudziło rozbuduję go tak aby nie posiłkował się produkcją bat-a ale działał sam z siebie

 

ps

Ponieważ rzecz się dzieje w systemie z lini vista można napotkać na problem z odpaleniem skryptu nawet z konta administratora, część pod kluczy będzie się "stawiać"

ale jest na to rada - odpalamy skrypt poprzez psexec.exe z zestawy sysinternals:

Stronka z programem

odpalamy go z parametrem -s i pełną ścieżką do skryptu trzeba też podać parametr -w ze ścieżką katalogu z którego plik jestr odpalany i w którym znajduje się setacl.exe

 

Dodałem też recurencję co może pomóc przy zagłębionych kluczach z pomieszanym dziedziczeniem uprawnień - de facto z włączoną recurencją skrypt mógłby być prostszy (bez sub procedury) ale taki jest bardziej rozwojowy :)

 

ps 2

Przerobiłem lekko skrypt - teraz ustawia komendy już z użyciem psexec

Dodatkowo zmienia też uprawnienia klucza głównego a nie tylko podkluczy

Część parametrów została wyciągnięta jako zmienne które łatwiej ustawić, myślę że teraz jest trochę przejrzyściej

 

pzdr

Odnośnik do komentarza

To jeszcze coś programowo (podobnie jak podał maggreg).

 

1. USBDeview

2. USB Fehlerbehebung

 

Podaj dokładne oznaczenia tego pendrive i info z ChipGenius.

 

Otóż, po pierwsze, po włożeniu do portu usb pojawia się propozycja naprawy. Teraz już ignoruję ten komunikat, bo wiem, że i tak nie naprawi.

Dzieje sie tak, bo pendrive został uprzednio wyciągnięty, gdy trwała jeszcze operacja kopiowania/usuwania, były przetwarzane dane, etc.

Teraz ma znacznik błędu i dlatego dostajesz ten komunikat. No tak to przynajmniej wygląda.

 

Ignorujesz - znaczy przeprowadziłeś już proponowane skanowanie z naprawa błędów?

Hm...formatowałes go już, w takim razie spróbuj go wyzerować i potem sformatuj.

Odnośnik do komentarza

Witam. Dopiero usiadłem do kompa i widzę, że temat wciąż żyje.

Zaczynam więc od początku: skrypcik faktycznie odpala MU :lol: lecz niestety nie ma tam żadnych nieznanych urządzeń. Wszystko wygląda na ok.

Wchodzę w rejestr i widzę tam kilka urządzeń w kluczu

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Enum\USBSTOR (screen)

Do każdego przypisany jakiś numerek, a do tego trefnego aż 2. Teraz bardzo proszę o dalsze wskazówki. Usunąć te klucze?

 

ChipGenius:

 

Device Name: +[G:](Kingston DataTraveler 2.0 USB Device)

 

PnP Device ID: VID = 1002 PID = 4397

Serial Number: 3&&267A616A&&0&&90

Revision: /1.00

 

Device Type: Generic USB Host Controller - USB2.0 Full-Speed (USB1.1)

 

Chip Vendor: (No match record)

Chip Part-Number: (No match record)

 

Product Vendor: Kingston

Product Model: DataTraveler 2.0

 

Tools on Web: (N/A)

post-203-12762850736545_thumb.png

post-203-12762856896667_thumb.png

Odnośnik do komentarza

Wg mnie zastosuj się do dolnej części porady Tyrola. Napraw go.

Edycję rejestru wykonaj jako późniejszą bo po ponownym podpięciu tego pena w rejestrze pojawią się podobne wpisy.

 

Zapomniałem wcześniej zapytać czy nie odłączyłeś pena w trakcie zapisu.

Peny o większej pojemności dosyć długo wykonują operacje w trakcie odłączania urządzenia w Trayu.

Na moim Kingstonie 32 GB odłączanie urządzenia trwa około 7-10 sek i mimo iż mam komunikat "Można odłączyć urządzenie" to jednak LED w penie mruga jeszcze kilka sekund.

 

Radzę zawsze stosować zasadę : Odłącz Urządzenie.

 

 

 

Odnośnik do komentarza

zobacz jeszcze to narzędzie a jak nie pomoże to np. tym do zerowania.

 

zerowanie przydaje się wtedy kiedy np. na dysku masz błędy logiczne albo sprzedajesz dysk - zwykłe formatowanie nie załatwia sprawy tzn. że twoje dane mimo tego, że sformatowałeś dysk mogą zostać odzyskane. killdisk i podobne (np. narzędzie dodawane do recovery od laptopów sony) nadpisują twój dysk zerami (są różne metody ale ta jest standardowa) tym samym wszystkie dane są usunięte bezpowrotnie.

Odnośnik do komentarza

Powinienem pisać wszystko, więc:

USB Fehlerbehebung 2.2 - użyłem go chociaż nie do końca znam niemiecki. Nieważne, poszło. Teraz poszedł kolejny format tym: USB Disk Storage Format Tool 2.2.3

Zrobiłem jeszcze w międzyczasie test prędkości tym: USBDeview.

Ku mojemu zdumieniu skończył i podał wyniki (screen). Ruszył ładnie, ale później - wiadomo.

Może na wszelki wypadek przypomnę, że w komputerze obok działa bezproblemowo.

post-203-12762902708237_thumb.png

Odnośnik do komentarza

ok skoro już kombinujemy na wszystkie możliwe sposoby to:

 

1. ściągnij sobie np. flashnul

2. rozpakuj i wrzuć bezpośrednio np. na c:\ albo d:\ i zmień nazwę na flashnul

3. otwórz cmd z prawami admina

4. podaj ścieżkę do folderu przykładowo będzie ona wyglądała tak: c:\flashnul

5. w cmd będąc w katalogu flashnul (przykładowo C:\>flashnul) pdajesz polecenie flashnul -p

6. podaj wynik

Odnośnik do komentarza

dzięki

teraz pytanie - masz jakiś obraz systemu w .iso? jeśli nie to ściągnij sobie arch linux64 (nie bój się nie będziesz musiał instalować)

 

później przerzuć ściągnięty obraz znowu na C:\ albo D:\

 

i tak jak w punkcie 5 w moim poprzednim poście ale zamiast flashnul podaj flashnul 1 -L c:\archlinux-2010.05-netinstall-x86_64.iso

* archlinux-2010.05-netinstall-x86_64.iso to pełna nazwa pliku a c:\ to przykładowa ścieżka do niego

* 1 ponieważ twój dysk tak został oznaczony, jeśli wypluje błąd to zamiast 1 podaj literę napędu np. G: (bo taką literę masz zapewne przypisaną) i reszta bez zmian - wykonaj zrzuty obu operacji.

Odnośnik do komentarza
Gość
Ten temat został zamknięty. Brak możliwości dodania odpowiedzi.
  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...