Frage

Ich glaube, dass ich erfolgreich mein eigenes Benutzerkonto imitierte während einer ASP.NET-Seite auf meinem lokalen Rechner ausgeführt wird.

Mit dem beschriebenen Verfahren hier , habe ich geändert erfolgreich die WindowsIdentity.GetCurrent().Name von ASPNET zu meinem Domain-Konto.

Ich kann erfolgreich in eine Datei auf dem Dateisystem schreiben, die nur mein Konto zugreifen dürfen. Allerdings, wenn ich versuche, eine Performance Counter-Kategorie zu löschen, bekomme ich Zugriff verweigert .
Ich habe Revision auf dem Zweig der Registry und seine mir zu sagen, dass MyMachine \ ASPNET bei Object Access Failing .

Hier ist der Code es versagt auf:

if ( PerformanceCounterCategory.Exists ( PerfmonCategory ) )
        PerformanceCounterCategory.Delete ( PerfmonCategory );

Sein Versagen auf dem Rufnummer löschen.

(Mein Konto ist admin und ich kann den gleichen Code außerhalb einer ASP.NET-Kontext erfolgreich ausgeführt).

Ich vermute, dass dieser Namespace System.Diagnostics Aufruf tatsächlich einige COM-Prozess ruft und irgendwie habe ich wegen eines zweiten Hop prallt bin wird. Kann jemand bestätigen, was los sein könnte?

Edit: Die Ausnahme: Zugriff wird verweigert Beschreibung: Eine nicht behandelte Ausnahme trat während der Ausführung der aktuellen Webanforderung. Überprüfen Sie die Stapelüberwachung, um weitere Informationen über den Fehler und wo es im Code verursacht.

Ausnahmedetails:

  

System.ComponentModel.Win32Exception: Zugriff verweigert

Beim Laufen unter voller Vertrauen.

War es hilfreich?

Lösung

Sie können Ihre Anwendung auf einem eigenen Anwendungspool (immer eine gute Sache) und weisen Sie ihm den Service-Benutzer über die entsprechenden Rechte führen, dass die Art und Weise Sie zu verwirren müssen nicht mit Identitätswechsel.

Andere Tipps

Sie brauchen in der Tat ein Admin sein, um Leistungsindikatoren hinzuzufügen oder zu entfernen.

Ich bin mir nicht sicher, warum Sie verwenden möchten, würde Win32-API Ihre Identitätswechsel zu tun, nennt - es ist eine Weile her, seit ich mit ihm verwirrt habe, aber ich denke, alles, was Sie tun müssen, ist mit

WindowsIdentity.GetCurrent().Impersonate()

Um klar zu sein, müssen Sie zuerst in Ihrer Web-Anwendung mit Windows-Authentifizierung authentifizieren müssen, und dann sollten Sie in der Lage sein, den Anruf zu tätigen, um Identitätswechsel ().

Impersonate () Methode

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top