Próbuję wykonać PSExec
z mojej aplikacji sieci Web Asp.Net, aby połączyć się ze zdalnym serwerem. W jakiś sposób daje on "Access Denied Error -5"
bez ustawionych referencji, a ustawiając poświadczenia w komendzie PSEXEC, daje to "2250 Network connection could not be found"
. Jestem administratorem na serwerze i mam włączoną Windows authentication and Asp.Net Impersonation
(). Co ciekawsze, gdy próbuję wykonać to z poziomu console application
lub nawet po prostu używając command prompt
to po prostu działa dobrze. Próbuję wykonać operację ping jako test.Wykonaj skrypt przy użyciu sysinternals PSExec z aplikacji WWW Asp.Net
Tu jest mój urywek kodu: -
var startInfo = new ProcessStartInfo{
CreateNoWindow = true,
UseShellExecute = false,
FileName = FilePath,
Arguments = CommandArgs
}
Process vsCommandProcess = Process.Start(startInfo);
vsCommandProcess.WaitForExit();
var exitCode = vsCommandProcess.ExitCode;
if (vsCommandProcess.ExitCode != 0)
{
...rest of the code
Tutaj: -
FilePath --> C:\pstools\psexec.exe
Arguments --> \\servername -accepteula -u domain\userName -p password ipconfig (1)
\\servername -accepteula ipconfig (2)
(1) Gives Error 2250 (2) gives Error 5
To samo polecenie i kod działa z aplikacji konsoli. Sądzę, że zdecydowanie ma to coś wspólnego z aplikacją Asp.net, która nie jest w stanie przenieść referencji do zdalnego komputera. Wydarzenie próbowałem startInfo.LoadUserProfile
, ale bezskutecznie.
Doceń swoją pomoc. Próbowałem znaleźć podobne pytania, ale nie mogłem znaleźć rozwiązania problemu, z którym się borykam.
1 Jeśli działa z konsolą, a nie z aplikacją internetową ASP, to brzmi jak problem bezpieczeństwa. 2 Czy sprawdziłeś również, czy wersja .net jest właściwa? Spróbuj uruchomić pulę aplikacji w IIS z .net 2.0 (miałem dzisiaj ten problem). – gartenabfall
Używam wersji dotnet 4.0. tak wydaje się, że więcej tokenu uwierzytelniania nie jest przenoszone .... – PSL
Czy usługi IIS działają na tych samych prawach użytkownika, co w wierszu polecenia? – Powerslave