Microsoft
Software
Hardware
Network
Frage : Einen angemeldeten Benutzer verkörpern
Ich habe einen Service, der als Konto des lokalen Systems läuft. Ich muss Zugang zu das logg auf Benutzerregister erhalten. Ich habe versucht, den angemeldeten Benutzer aber kein Glück zu verkörpern. Es scheint, die Personifizierung zu ändern, aber, wenn ich auf das Register zurückgreife, es ist noch die Dienstleistungen. Jedermann haben alle mögliche Ideen?
I versuchte, die Benutzer Schein zu erhalten so using die GetLoggedOnUserToken Funktion below.
{
System.IntPtr userToken = GetLoggedOnUserToken ();
pLog.InfoFormat („Name der Identität vor Personifizierung: {0}. “, WindowsIdentity.GetCurrent
(). Name);
ImpersonateLoggedOnUser (userToken);
pLog.InfoFormat („Name der Identität nach Personifizierung: {0}. “, WindowsIdentity.GetCurrent
(). Name);
Microsoft.Win32.RegistryKe
y Schlüssel = Microsoft.Win32.Registry.C
urrentUser
.OpenSubKe
y (@ " Softwa
re \ Test ");
sSessionId = Convert.ToString (key.GetVa
lue („Sessi
on“));
RevertToSelf ();
}
allgemeines statisches IntPtr GetLoggedOnUserToken ()
{
IntPtr primaryToken = IntPtr.Zero;
//Either spezifizieren den processID explicitly
//Or Versuch, um ihn von einem Prozess zu erhalten, der durch das user.
//In dieser Fall besessen wird, der annimmt, dass es nur einen explorer.exe
Prozess [] ps = Process.GetProcessesByName
gibt („explorer
");
int processId = -1; //=processId
wenn (ps. Länge > 0)
{
processId = ps [0]. Identifikation;
}
wenn (processId > 1)
{
IntPtr Zeichen = IntPtr.Zero;
bool retVal = falsch;
Prozess p = Null;
try
{
p = Process.GetProcessById (pro
cessId);
}
Fang (ArgumentException)
{
Schnur = String.Format einzeln auf („ProcessID {0} nicht vorhanden“, processId);
Debug.WriteLine (Details);
Wurf;
}
//Gets Personifizierung token
retVal = OpenProcessToken (p.Handle,
TOKEN_ALL_ACCESS, Hinweis-Zeichen);
wenn (retVal == zutreffend)
{
SECURITY_ATTRIBUTES sa = neues SECURITY_ATTRIBUTES ();
sa.nLength = (uint) Marshal.SizeOf (sa);
//Convert das Personifizierungzeichen in das Primärtoken
retVal = DuplicateTokenEx (
Zeichen,
TOKEN_ALL_ACCESS,
Hinweis sa,
(int) ProcessUtility.SECURI
TY_IMPERSO
NATION_LEV
EL.Securit
yImpersona
tion,
(int) ProcessUtility.TOKEN_
TYPE.Token
Impersonat
ion,
Hinweis);
//Close das Zeichen, das vorher opened.
CloseHandle (Zeichen) war;
, wenn (retVal == falsch)
{
Schnurmitteilung = String.Format („DuplicateTo
kenEx Störung: {0}“, Marshal.GetLastWin32Error (
));
Debug.WriteLine (Mitteilung);
}
}
else
{
Schnurmitteilung = String.Format („OpenProcess
Token Störung: {0}“, Marshal.GetLastWin32Error (
));
Debug.WriteLine (Mitteilung);
}
}
Rückkehr primaryToken;
}
Antwort : Einen angemeldeten Benutzer verkörpern
Hallo fitaliano,
Irgendwelche der bestehenden Aufkleber anklicken, dann addieren Klicken Werkzeuge - X-Ydiagramm-Aufkleber - Diagrammaufkleber. Klicken im Aufkleber-Streckenfeld und in den auserwählten Zellen I2: I44. Die Aufkleberposition einstellen, um O.K. zu zentrieren und anzuklicken.
Sehen angebracht für das Resultat.
Beifall, teylyn
Weitere Lösungen
Wort-Presse, die Frage bewirtet
asp.net: Mein Problem ist, benutze ich einen ajax Ergänzung Kalender, um BeginDate u. EndDate Werte einzutragen
Silverlight 4 UI Ereignisse
wie kann ich irgendeine Bildentschließung online ändern und sie zum lokalen PC dann innen sparen??
ZFS Sicherungshilfe Ubuntu 10.0.4 LTS
Form-Frage für Kristallreports
Betreffend INOTES in Lotos 8.5
Mühen, die ZWISCHEN Logik erhalten zu arbeiten
Spannungs-Sensor ermittelte einen Ausfall auf Bediener DELL-PowerEdge 2650
broadcom NIC teaming