Process.Start with UserName/Password gives Access is Denied

Discussion in 'ASP .Net' started by Kirk, Feb 9, 2006.

  1. Kirk

    Kirk Guest

    The following C# web service works fine until you uncomment the lines
    setting UserName and Password. Then, Process.Start throws an
    Access is Denied Exception. This is with .NET 2.0, of
    course (1.1 does not support running a process as a different user).
    I'm running everything on Windows Server 2003. I have impersonation
    enabled
    in my web.config, and I'm using Integrated authentication on the IIS
    virtual
    directory that this aspx is in. When I invoke the service via the
    default
    aspx browser, I connect as a domain user.

    I understand that IIS runs as Local System, and I cannot start a
    process
    as a different user like this from Local System. So I put this Web
    Service into an IIS Application Pool with the Identity set to the local
    Administrator account. I also added local Admin to the IIS_WPG group
    and
    granted access to "Adjust memory quotas for a process" and "Replace a
    process level token". Despite all this, it still tells me "Access is
    Denied"
    when I try to start the process with ProcessStartInfo.UserName set.
    Even if,
    as the code below shows, I try to start with with the name and password
    of the
    local Adminstrator (the same account the pool is configured to use
    anyway)!

    Just to clarify, if I invoke without UserName set, the process runs
    fine and
    whoami tells me it is the local Administrator as expected. What other
    access
    do I need to grant local Administrator to allow it to create this
    process as
    a different user?

    <%@ WebService Language="C#" Class="Kirk.ForkIt" %>

    using System;
    using System.IO;
    using System.Collections;
    using System.Security;
    using System.Web.Services;
    using System.Diagnostics;

    namespace Kirk
    {
    public class ForkIt
    {


    [WebMethod]
    public string Main()
    {
    Process p = new Process();
    ProcessStartInfo pInfo = new
    ProcessStartInfo(@"c:\windows\system32\whoami.exe");

    SecureString password = new SecureString();
    // set value for password here.
    password.AppendChar('s');
    password.AppendChar('e');
    password.AppendChar('c');
    password.AppendChar('r');
    password.AppendChar('e');
    password.AppendChar('t');

    //pInfo.UserName = "Administrator";
    //pInfo.Password = password;
    pInfo.CreateNoWindow = true;
    pInfo.UseShellExecute = false;
    pInfo.RedirectStandardOutput = true;

    p.StartInfo = pInfo;
    p.Start();

    String output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();

    return output;
    }
    }
    }
    Kirk, Feb 9, 2006
    #1
    1. Advertising

  2. Kirk

    jfvilas

    Joined:
    May 27, 2010
    Messages:
    1
    Hi Kirk, have you solved this problem? I've got the same situation and i get this error: "Invalid controller", and have no idea on how to solve it.

    The same as you, if i stop using username and password, the process.start is ok.
    jfvilas, May 27, 2010
    #2
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Cédric Rossé
    Replies:
    3
    Views:
    22,686
    Anmol_Kumar
    Sep 23, 2008
  2. aemi
    Replies:
    1
    Views:
    15,958
  3. Speech Lover
    Replies:
    0
    Views:
    355
    Speech Lover
    May 8, 2007
  4. EJS
    Replies:
    0
    Views:
    309
  5. ngoc
    Replies:
    1
    Views:
    96
    A. Sinan Unur
    Sep 26, 2005
Loading...

Share This Page