Avatar billede torbenph Nybegynder
28. november 2008 - 13:54 Der er 5 kommentarer og
1 løsning

Afvikle exe fil fra webservice

Hej,
Jeg har et problem med at afvikle en exe fil, kaldt fra en webservice.
Filen bliver kaldt og kan ses i taskmanager, men der sker ikke mere. Den står bare uendelig lang tid.
Det eneste den skal nu, er at skrive til en log fil.
Håber i kan hjælpe, her er den kode jeg bruger:
 
System.Diagnostics.ProcessStartInfo startInfo;
startInfo = new System.Diagnostics.ProcessStartInfo("c:\\Kurs\\Kurs.exe");
startInfo.UseShellExecute = false ;
startInfo.RedirectStandardInput = true;
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = "";
System.Diagnostics.Process pStart = new Process();
pStart.StartInfo = startInfo;
pStart.Start();

Jeg får ingen fejl, da process starter op, problemet er at den ikke laver noget som helts.
Hvis jeg afvikler filen manuelt på serveren, virker den fint.
Hilsen
Torben
Avatar billede kalp Novice
28. november 2008 - 13:57 #1
næh.. det er da ikke mærkeligt.
ASPNET har absolut laveste rettigheder, så derfor må du ikke afvikle den der EXE fil.

Hvis du skal gøre det bliver du nød til, at lave noget impersonation!
Google

;-)
Avatar billede torbenph Nybegynder
28. november 2008 - 14:07 #2
Hej,
Tænkte nok at det var noget med sikkerhed at gøre.
Jeg har googlet hele dage og prøvet 100 forskellige ting.
Avatar billede kalp Novice
28. november 2008 - 14:15 #3
så mangler du stadig og prøve impersonation:P
du skal lige rette til der hvor bruger, password og domain er angivet.

Importer:
System.Security.Principal
System.Runtime.InteropServices

Definer:
[DllImport("advapi32.dll", SetLastError = true)]
    static extern bool LogonUser(
      string principal,
      string authority,
      string password,
      LogonSessionType logonType,
      LogonProvider logonProvider,
      out IntPtr token);
    [DllImport("kernel32.dll", SetLastError = true)]
    static extern bool CloseHandle(IntPtr handle);
    enum LogonSessionType : uint
    {
        Interactive = 2,
        Network,
        Batch,
        Service,
        NetworkCleartext = 8,
        NewCredentials
    }
    enum LogonProvider : uint
    {
        Default = 0,
        WinNT35,   
        WinNT40,   
        WinNT50     
    }

kode:

try {
    IntPtr token = IntPtr.Zero;
    WindowsImpersonationContext impersonatedUser = null;
bool result = LogonUser("KONTO", "DOMAIN",
                                    "PASSWORD",
                                    LogonSessionType.Network,
                                    LogonProvider.Default,
                                    out token);
            if (result)
            {
                WindowsIdentity id = new WindowsIdentity(token);
                impersonatedUser = id.Impersonate();
                System.Diagnostics.ProcessStartInfo startInfo;
startInfo = new System.Diagnostics.ProcessStartInfo("c:\\Kurs\\Kurs.exe");
startInfo.UseShellExecute = false ;
startInfo.RedirectStandardInput = true;
startInfo.WindowStyle = ProcessWindowStyle.Normal;
startInfo.Arguments = "";
System.Diagnostics.Process pStart = new Process();
pStart.StartInfo = startInfo;
pStart.Start();
            }

} finally
      {
            if (impersonatedUser != null)
                impersonatedUser.Undo();
     
            if (token != IntPtr.Zero)
                CloseHandle(token);
      }
Avatar billede torbenph Nybegynder
28. november 2008 - 14:29 #4
Ok, på den måde.
Det vil jeg lige prøve senere, har ikke mere tid lige nu.
Jeg vender tilabge når jeg har afprøvet.
/Torben
Avatar billede torbenph Nybegynder
28. november 2008 - 22:56 #5
Dette virkede faktisk heller ikke.
Men jeg fandt ud af det. Efter at jeg tilføjede min exe fil til "web service extension" i IIS'en og gav både exe og xml filen skriverettigheder for "Network Service" brugere.
Ja, så virkede det.
Jeg takker for hjælpen.
Avatar billede torbenph Nybegynder
02. december 2008 - 11:28 #6
Tråd lukkes
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester