Próbuję uruchomić aplikację na komputerze z systemem Windows Server 2008 R2 z komputera z systemem Windows Server 2003 R2 przy użyciu pliku wsadowego z następującym wierszem kodu w pliku wsadowym:
psexec \\nightmachine -u DOMAIN\User -p Password -i "C:\FilePath\Application.exe" argument1 argument2
Aplikacja nie działa poprawnie po uruchomieniu za pomocą psexec, ale aplikacja będzie działać poprawnie, jeśli zaloguję się do nightmachine z tym samym użytkownikiem i uruchomię go ze ścieżki pliku za pomocą cmd. Udało mi się pobrać błąd zwrócony w aplikacji z jego dziennika, a zwrócony wyjątek jest następujący:
System.DllNotFoundException: Nie można załadować biblioteki DLL „rasapi32.dll”: Nie powiodła się procedura inicjowania biblioteki DLL (DLL). (Wyjątek od HRESULT: 0x8007045A)
Po wyszukaniu tego kodu błędu w sieci istnieje wiele postów mówiących, że jest to spowodowane uszkodzeniem pliku, ale nie mogę zrozumieć, dlaczego tak się dzieje, ponieważ aplikacja będzie działać normalnie, gdy nie będzie uruchamiana z psexec. (użytkownik jest administratorem na obu komputerach)
Czy ktoś może mi w tym pomóc? Jeśli potrzebujesz więcej informacji, aby rozwiązać ten problem, zapytaj, a ja postaram się go opublikować.
źródło
Problem rozwiązany! Odkryłem, że aplikacja działająca na zdalnym komputerze PC przez psexec traci dane użytkownika, gdy aplikacja wywołuje procesy poza sobą, co oznacza, że wszelkie wymagane uprawnienia zostały utracone.
Aby obejść ten problem, skończyłem konfigurować zaplanowane zadanie na zdalnym komputerze, na którym aplikacja żyje, aby uruchomić aplikację przy użyciu wymaganych poświadczeń użytkownika. Zadanie skonfigurowano tak, aby było uruchamiane raz, ale także skonfigurowane tak, aby można je było uruchomić ręcznie. Oznaczało to, że gdy aplikacja została uruchomiona przez zadanie, nie utracono żadnych uprawnień. Rozpocząłem zadanie za pomocą Psexec:
psexec \\remotemachine schtasks /run /tn "Task name"
źródło