Fråga : Impersonate en loggad in användare

Jag har ett tjänste- som är rinnande som ett lokalsystemkonto.  Jag behöver att få tar fram till loggen på användareregistrering.  Jag har försökt att impersonate den loggade in användaren men ingen lycka.  Den verkar att ändra impersonationen, men, när jag tar fram registreringen, det är den stillbilden servar.  Någon har några idéer? försökt

I få användarena teckennågot liknande detta using GetLoggedOnUserTokenen fungerar below.

{
System.IntPtr userToken = GetLoggedOnUserToken ();

pLog.InfoFormat (”namnge av identiteten för impersonation: {0}. ” WindowsIdentity.GetCurrent (). Namnge);
ImpersonateLoggedOnUser (userToken);
pLog.InfoFormat (”namnge av identiteten efter impersonation: {0}. ” WindowsIdentity.GetCurrent (). Namnge); Nyckel-
Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey (@ " Software \ testar "); sSessionId för
= Convert.ToString (key.GetValue (”Session”));
RevertToSelf för
(); IntPtr GetLoggedOnUserToken för statisk elektricitet för

för
} offentlig ()
{
IntPtr primaryToken = IntPtr.Zero;

//Either specificerar försök för processIDexplicitly
//Or att få det från ett processaa som ägas av user. //In detta fall som antar att det finns endast en processaa explorer.exe

[] ps = Process.GetProcessesByName (”explorer”); processId för
int = -1; //=processId
om (ps. Längd > 0)
{processId för
= ps [0]. ID;

för
} om (processId > 1)
{tecken för
IntPtr = IntPtr.Zero; falsk bool för
är retVal =;
bearbetar p = ogiltigt; try
{
för

p = Process.GetProcessById (processId);

för
} fångar (ArgumentException)
{

stränger specificerar = String.Format (”0} inte tillgängliga ProcessID {”, processId);
Debug.WriteLine (specificerar); kast för
; retVal token
för impersonation för

//Gets för
} = OpenProcessToken (p.Handle, TOKEN_ALL_ACCESS, referens-tecken);
om (riktig retVal ==)
{SECURITY_ATTRIBUTES sa för

= ny SECURITY_ATTRIBUTES ();
sa.nLength = (uint) Marshal.SizeOf (sa);

//Convert impersonationtecken in i retVal primär token
= DuplicateTokenEx (det
tecken,
TOKEN_ALL_ACCESS, referens sa,
(int) ProcessUtility.SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation,
(int) ProcessUtility.TOKEN_TYPE.TokenImpersonation, referens för
för
primaryToken);

//Close tecken som var föregående opened.
CloseHandle (tecken);
, om (falsk retVal ==)
{
stränger meddelandet = String.Format (”det DuplicateTokenEx felet: {0}”, Marshal.GetLastWin32Error ());
Debug.WriteLine (meddelande); else
för
för
för
}} {
stränger meddelandet = String.Format (”det OpenProcessToken felet: {0}”, Marshal.GetLastWin32Error ());
Debug.WriteLine (meddelande); retur för
för
för

}} primaryToken;
för
} " klar "

Svar : Impersonate en loggad in användare

Hälsningfitaliano,

Klicka några av de existerande etiketterna, då klicka bearbetar - XY kartlägga etiketter - tillfogar kartlägger etiketter. Klicka i etiketten spänner sätter in och väljer celler I2: I44. Uppsättning som etiketten placerar för att centrera och klicka REKO.

Se fäst för resultatet.

jubel teylyn
Andra lösningar  
 
programming4us programming4us