Ik ben bezig met een applicatie waarvoor ik een user moet impersonaten. Op zich heb ik hier code voor die goed werkt op meerder computers. Alleen bij de computer waar ik nu op aan het ontwikkelen ben wil het maar niet goed werken.
Eerst even een stukje code waar het fout loopt
logonType is hier LOGON32_LOGON_INTERACTIVE
Het vreemde is dat de returnvalue van LogonUser bij deze computer altijd false is. Volgens de documentatie van LogonUser zou bij een return value false via GetLastError ( In .net dus GetLastWin32Error ) de error op te vragen moeten zijn
Ik denk dat ik op mijn computer ergens nog wat aan de security policy moet veranderen maar omdat ik ook geen foutmelding krijgt zou ik niet weten waar. Weet iemand mischien waar het fout gaat of een manier om alsnog een melding te krijgen waarom de functie LogonUser false als return value geeft?
Eerst even een stukje code waar het fout loopt
C#:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| [DllImport("advapi32.dll")] private static extern bool LogonUser( String userName, String domainName, String password, int LogonType, int LogonProvider, ref IntPtr TokenHandle ); .... .... IntPtr token = new IntPtr(0); bool result = LogonUser(userAccountName, domain , password, (int)logonType, (int)Impersonation.LogonProvider.LOGON32_PROVIDER_DEFAULT, ref token); int errorCode = System.Runtime.InteropServices.Marshal.GetLastWin32Error(); |
logonType is hier LOGON32_LOGON_INTERACTIVE
Het vreemde is dat de returnvalue van LogonUser bij deze computer altijd false is. Volgens de documentatie van LogonUser zou bij een return value false via GetLastError ( In .net dus GetLastWin32Error ) de error op te vragen moeten zijn
Maar errorCode blijft ook gelijk aan 0 wat dus als message heeft "The operation completed successfully."If the function succeeds, the return value is nonzero.
If the function fails, the return value is zero. To get extended error information, call GetLastError.
Ik denk dat ik op mijn computer ergens nog wat aan de security policy moet veranderen maar omdat ik ook geen foutmelding krijgt zou ik niet weten waar. Weet iemand mischien waar het fout gaat of een manier om alsnog een melding te krijgen waarom de functie LogonUser false als return value geeft?
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”