Re: Impersonation question for network resources
- From: Ben Fidge <BenFidge@xxxxxxxxxxxxxxxxxxxxxxxxx>
- Date: Fri, 16 Dec 2005 05:37:03 -0800
Found it!!
First of all, I was assuming that LogonUser returned 0 (zero) on success,
wrongly. Secondly, I changed my code to use LOGON32_LOGON_NEW_CREDENTIALS
instead of LOGON32_LOGON_NETWORK, and it works a treat.
Ben
"Ben Fidge" wrote:
> Hi Martin,
>
> Here's the code I'm using. Please note that the Win32 API calls are wrapped
> up in a static class called Impersonation:
>
> IntPtr pWindowsIdentity = IntPtr.Zero;
> int iResult = Impersonation.LogonUser("MyAccount",
> "MyDomain", "MyPassword", Impersonation.LOGON32_LOGON_INTERACTIVE,
> Impersonation.LOGON32_PROVIDER_DEFAULT, ref pWindowsIdentity);
>
> if (iResult == 0 && pWindowsIdentity != IntPtr.Zero) {
> WindowsIdentity oNewWI = new WindowsIdentity(pWindowsIdentity);
> Impersonation.CloseHandle(pWindowsIdentity);
>
> WindowsImpersonationContext oWIC = oNewWI.Impersonate();
>
> // .... Do code to access network resource here
>
>
> oWIC.Undo();
> }
> else {
> int iError = Impersonation.GetLastError();
> throw new Exception(string.Format("Could not logon user using credentials
> provided. Error No: {0} - Error: {1}", iError,
> Impersonation.CreateLogonUserError(iError)));
> }
>
>
> Regards
>
> Ben
>
> "Martin Kulov" wrote:
>
> > Hi Ben,
> >
> > Some code sample will be very usefull.
> >
> > Best,
> > Martin
> >
> >
> > "Ben Fidge" <BenFidge@xxxxxxxxxxxxxxxxxxxxxxxxx> wrote in message
> > news:131F85CA-AE34-411C-BA3B-902470935B7F@xxxxxxxxxxxxxxxx
> > > Hi
> > >
> > > I have a small WinForms app that needs to copy files from a shared drive
> > > on
> > > a network. If I connect to the mapped drive using Explorer, a password
> > > dialog
> > > pops-up and I have to provide credentials with permission to access this
> > > resource on the machine where it's hosted. This is once for each desktop
> > > logon session (ie after every reboot). If I do this, my app can access the
> > > network resource fine, but otherwise fails with permission errors.
> > >
> > > As my app runs when Windows starts, I don't want to first connect to the
> > > mapped drive each and every time.
> > >
> > > I've found some C# code that allows me to impersonate a
> > > domain/account/password context, but it won't work in the scenario I want.
> > > I
> > > know the code works because it allows me to impersonate local accounts,
> > > just
> > > not access the network resource. When run, the following error occurs:
> > >
> > > "Error No: 1326 - Error: Logon failure: unknown user name or bad
> > > password."
> > >
> > > However, I know the domain/account/password are all correct.
> > >
> > > The code is based on Win32 API's LogonUser. Am I barking up the wrong
> > > tree?
> > >
> > > Thanks
> > >
> > > Ben
> >
> >
.
- References:
- Re: Impersonation question for network resources
- From: Martin Kulov
- Re: Impersonation question for network resources
- From: Ben Fidge
- Re: Impersonation question for network resources
- Prev by Date: Re: Impersonation question for network resources
- Next by Date: File ACL Permissions and setting inheritance?
- Previous by thread: Re: Impersonation question for network resources
- Next by thread: File ACL Permissions and setting inheritance?
- Index(es):
Relevant Pages
|