Po zaakceptowaniu niewielkiej aktualizacji systemu Windows tego popołudnia stwierdziłem, że nie mogę już tworzyć podpisanych wersji mojej aplikacji Visual Studio.
Wnikając w problem, natknąłem się na program signtool.exe, który znajduje się w niejasnym katalogu (C: \ Program Files (x86) \ Windows Kits \ 10 \ bin \ 10.0.18362.0 \ x64). Korzystając z wiersza polecenia, próbowałem ręcznie uruchomić go w celu podpisania aplikacji, ale kiedy to zrobiłem, nic się nie wydarzyło: brak danych wyjściowych, brak komunikatu o błędzie. Próbowałem też uruchomić go bez parametrów oczekujących komunikatu pomocy lub przynajmniej błędu, ale znowu nic.
Poszedłem na inny komputer, który nie otrzymał dziś żadnych aktualizacji systemu Windows, znalazłem ten sam plik i uruchomiłem go: i działał dobrze.
Myśląc, że musiałem mieć uszkodzony plik .exe na pierwszym komputerze, skopiowałem wersję z drugiego komputera, ale nadal nie udało się. Jeśli jednak zmienię nazwę pliku, zostanie on uruchomiony. Na przykład, jeśli zmienię nazwę na „signtool1.exe”, mogę go uruchomić z wiersza poleceń, chociaż Visual Studio nadal nie może go uruchomić z powodu zmiany nazwy.
Podczas tego procesu kilkakrotnie próbowałem ponownie uruchomić komputer, myśląc, że może jego kopia utknęła w pamięci, ale tak nie jest. Szukałem go również w Menedżerze zadań.
Nigdy wcześniej czegoś takiego nie widziałem. Ten sam program działa lub nie robi nic w zależności od nazwy pliku wykonywalnego. Jeszcze jeden szczegół, w rzeczywistości działa niezależnie od nazwy pliku, jeśli skopiuję go do mojego katalogu domowego. Co może spowodować coś takiego?
Dzięki, Frank
źródło
Odpowiedzi:
Zamiast zmiany nazwy signtool.exe odkryłem, że zmiana nazwy / usunięcie signtool.exe.manifest pozwala na uruchomienie signtool, a jednocześnie pozwala na uruchomienie programu Visual Studio.
Nie wiem, dlaczego tak się dzieje ani jakie są skutki uboczne usunięcia manifestu, ale wystarczy, że mój projekt będzie mógł ponownie zbudować.
Dla odniesienia napotkałem ten problem po przeprowadzeniu czystej instalacji VS2019 na czystej maszynie Wirtualnej systemu Windows 10 1909 (ale w pełni zaktualizowanej wkrótce potem).
źródło
Widzę ten sam problem. Signtool nie wyświetla żadnych okien dialogowych błędów, ale zwracany kod błędu to -1073741502 (0xC0000142), STATUS_DLL_INIT_FAILED.
Problem może być związany z aktualizacją KB4535996. Odinstalowałem aktualizację, gdy zobaczyłem problem i signtool działał normalnie. Problem powrócił po ponownym zainstalowaniu aktualizacji.
Signtool działa, jeśli przeniesie plik manifestu z katalogu, tak jak widzieliście. Ale zauważyłem również, że signtool działa, gdy przenoszę manifest z powrotem do katalogu.
źródło
Oto raport o błędach w Centrum opinii Windows. Głosuj za raportem błędu KB4535996.
źródło