Questione : Impersonate un utente entrato

Ho un servizio che sta funzionando come cliente del sistema locale.  Devo ottenere ad accesso all'il logg sulla registrazione degli utenti.  Ho provato a non impersonate l'utente entrato ma fortuna.  Sembra cambiare la personificazione, ma quando accedo alla registrazione esso è ancora i servizi.  Chiunque ha tutte le idee? il

I ha provato ad ottenere gli utenti simbolici come questo using la funzione below.

di GetLoggedOnUserToken {
System.IntPtr userToken = GetLoggedOnUserToken ();

pLog.InfoFormat (“nome dell'identità prima di personificazione: {0}. „, WindowsIdentity.GetCurrent (). Nome);
ImpersonateLoggedOnUser (userToken);
pLog.InfoFormat (“nome dell'identità dopo personificazione: {0}. „, WindowsIdentity.GetCurrent (). Nome); Chiave del
Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey (@ " Software \ prova "); sSessionId del
= Convert.ToString (key.GetValue (“Session„));
RevertToSelf del
();
del

IntPtr GetLoggedOnUserToken del
} () {
IntPtr primaryToken = IntPtr.Zero; il

//Either specifica la prova del explicitly
//Or del processID per ottenerlo da un processo di proprietà dal user.
//In questo caso che presuppone che ci sia soltanto un processo di explorer.exe

[] ps = Process.GetProcessesByName (“explorer"); processId del
int = -1; //=processId
se (ps. Lunghezza > 0)
{processId del
= ps [0]. Identificazione;

del
} se (processId > 1)
{segno del
IntPtr = IntPtr.Zero; bool del
retVal = falso;
trattato p = posizione di segnale minimo; try
{
del

p = Process.GetProcessById (processId);
{stringa del fermo del

del
} (ArgumentException) del

dettaglia = String.Format (“ProcessID {0} disponibili„, processId);
Debug.WriteLine (particolari); tiro del
; token
di personificazione del

//Gets del
} retVal = OpenProcessToken (p.Handle, TOKEN_ALL_ACCESS, segno di riferimento);
se (== retVal allineare)
{SECURITY_ATTRIBUTES sa del

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

//Convert il segno di personificazione in token
retVal = DuplicateTokenEx (il segno del
, il
TOKEN_ALL_ACCESS, riferimento il sa, il
(int) ProcessUtility.SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation, il
(int) ProcessUtility.TOKEN_TYPE.TokenImpersonation, riferimento del
del
primaryToken);

//Close il segno che era precedentemente opened.
CloseHandle (segno);
se (== retVal falso)
{messaggio della stringa del
= String.Format (“errore di DuplicateTokenEx: {0}„, Marshal.GetLastWin32Error ());
Debug.WriteLine (messaggio); else
{messaggio della stringa del
= String.Format (“errore del
del
} del
} di OpenProcessToken: {0}„, Marshal.GetLastWin32Error ());
Debug.WriteLine (messaggio); il ritorno del
del
del

}} primaryToken;
del
} class= del

Risposta : Impersonate un utente entrato

Ciao fitaliano,

Scattare c'è ne delle etichette esistenti, quindi gli attrezzi di scatto - etichette DI X-Y della tabella - aggiungono le etichette della tabella. Scattar nel campo della gamma dell'etichetta e selezionare le cellule I2: I44. Fissare la posizione dell'etichetta per concentrarsi e scattare l'APPROVAZIONE.

Vedere allegato per il risultato.

acclamazioni, teylyn
Altre soluzioni  
 
programming4us programming4us