Vraag : Doe een het programma geopende gebruiker na

Ik heb de dienst die als lokale systeemrekening loopt.  Ik moet toegang tot krijgen logg op gebruikersregistratie.  Ik heb geprobeerd om de het programma geopende gebruiker maar geen geluk te nadoen.  Het schijnt om de imitatie te veranderen, maar wanneer ik tot de registratie toegang heb is het nog de diensten.  Iedereen heeft om het even welke ideeën?

I probeerde krijgend het gebruikersteken als dit gebruikend de GetLoggedOnUserToken functie below.

{
System.IntPtr userToken = GetLoggedOnUserToken ();

pLog.InfoFormat („Naam van de identiteit vóór imitatie: {0}. “, WindowsIdentity.GetCurrent (). Naam);
ImpersonateLoggedOnUser (userToken);
pLog.InfoFormat („Naam van de identiteit na imitatie: {0}. “, WindowsIdentity.GetCurrent (). Naam); De sleutel van
Microsoft.Win32.RegistryKey = Microsoft.Win32.Registry.CurrentUser.OpenSubKey (@ de " Test van Software \ ");
sSessionId = Convert.ToString (key.GetValue („Session“));

RevertToSelf ();
}

openbare statische IntPtr GetLoggedOnUserToken ()
{
IntPtr primaryToken = IntPtr.Zero;

//Either specificeert processID explicitly
//Or probeert die het van een proces te krijgen door user.
//In dit geval wordt bezeten er veronderstellend slechts één/> Proces explorer.exe

(„explorer“) is;
int. processId = -1; //=processId
als (ps. Lengte > 0)
{
processId = ps [0]. Identiteitskaart;
}

als (processId > 1)
{
IntPtr teken = IntPtr.Zero; /> retVal bool
het Proces

try
{
p = Process.GetProcessById (processId); /> vangst
}

{detailleert/>
koord
Debug.WriteLine (details);
werpt; retVal
}

//Gets imitatie token
= OpenProcessToken (p.Handle, het teken van TOKEN_ALL_ACCESS, van ref);
als (retVal ware ==)
{

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

//Convert het imitatieteken in Primaire retVal token
= DuplicateTokenEx (
het teken,
TOKEN_ALL_ACCESS,
ref sa,
(int.) ProcessUtility.SECURITY_IMPERSONATION_LEVEL.SecurityImpersonation,
(int.) ProcessUtility.TOKEN_TYPE.TokenImpersonation,
ref primaryToken);

//Close het Teken dat eerder opened.
(symbolische) CloseHandle was;
als (retVal valse ==)
{
koordbericht = String.Format (de „Fout van DuplicateTokenEx: {0}“, Marshal.GetLastWin32Error ());
Debug.WriteLine (bericht);
}
}
else
{
koordbericht = String.Format (de „Fout van OpenProcessToken: {0}“, Marshal.GetLastWin32Error ());
Debug.WriteLine (bericht); /> de terugkeer

}
}
}

Antwoord : Doe een het programma geopende gebruiker na

Hello fitaliano,

Klik om het even welke bestaande etiketten, dan voegen de klikHulpmiddelen - de X-Y Etiketten van de Grafiek - grafieketiketten toe. Klik op het gebied van de Waaier van het Etiket en selecteer cellen I2: I44. Plaats de etiketpositie O.K. te centreren en te klikken.

Zie in bijlage voor het resultaat.

juicht, teylyn toe
Andere oplossingen  
 
programming4us programming4us