Ausführen von ClickOnce-Anwendung als Administrator
Habe ich eine vb.net clickonce-Anwendung, die verwendet werden von low-level-Personal mit nicht-administrator-Zugriffe. Jedoch, die Anwendung selbst benötigt zum speichern von Dateien in einem Ordner auf dem server, der versteckt ist und erlaubt nur lese - /schreib-Zugriff für Administratoren. Ich brauche für diese Benutzer in der Lage sein, um die Interaktion mit diesen Ordner mit der Anwendung, ohne Ihnen die Möglichkeit zu durchsuchen, um den Ordner auf Ihrem eigenen. Ich habe versucht, mit mehreren Identitätswechsel Techniken, die keiner hat.
http://weblogs.asp.net/ralfw/archive/2003/11/24/39479.aspx ist eine, die ich versucht habe. Er sagt immer noch der Zugriff verweigert wird, obwohl wenn ich Zurück System.Sicherheit.AUFTRAGGEBER.WindowsIdentity.GetCurrent().Namen es gibt den administrator-Anmeldeinformationen an.
Habe ich versucht, die Schaffung einer anderen Anwendung, die einfach funktioniert ein StartProcess sich mit administrator-Anmeldeinformationen, aber die Datei, die ich versuche zu starten ist .Anwendung und nicht ein .exe-Datei, so bekomme ich "Die angegebene ausführbare Datei ist keine gültige Anwendung für diese OS-Plattform" Fehler.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim file_name As String = "file path to .application file"
Dim p As New ProcessStartInfo(file_name)
p.UseShellExecute = False
p.Domain = "domain"
p.UserName = "administrator"
p.Password = New System.Security.SecureString()
For Each c As Char In "password"
p.Password.AppendChar(c)
Next
Process.Start(p)
End Sub
Habe ich versucht, dabei eine StartProcess für Internet Explorer und bietet ein argument die url zu der .Anwendung-Datei, die funktioniert, bis ich versuche, Anmeldeinformationen anderer als meine eigenen, und ich bekomme ein "cannot find file" - Fehler. Wenn ich alles entfernen von p aus.Benutzername zur Nächsten, öffnet die Anwendung, aber die Benutzer und nicht administrator. Unten ist der code für ein Versuch.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim p As New ProcessStartInfo(My.Computer.FileSystem.SpecialDirectories.ProgramFiles + "\Internet Explorer\IEXPLORE.EXE")
p.UseShellExecute = False
p.Domain = "domain"
p.UserName = "administrator"
p.Password = New System.Security.SecureString()
For Each c As Char In "password"
p.Password.AppendChar(c)
Next
p.Arguments = ("URL to .application file")
Process.Start(p)
End Sub
Bin ich in einem absoluten Verlust, wie haben diese Anwendung als admin ausführen, so dass Benutzer können Dateien anzeigen und speichern von Dateien dieser geschützten Lage nur mithilfe dieser Anwendung.
- Oh vergaß zu erwähnen, dass hab ich auch versucht, indem die .appref-ms, wie eine Anwendung Verweis auf mein Projekt und verwendet es in der processstartinfo() Bereich, und es hat funktioniert. Aber die .appref-ms-Datei von clickonce-stores in c:\\user\ " und dann den Benutzernamen des angemeldeten Benutzers an. Also, um für diese zu arbeiten, die ich brauchen würde, um in der Lage sein, dynamisch zu ändern, dass ein Abschnitt von mein Verweis auf was auch immer der Benutzer eingeloggt ist. Also, wenn jemand weiß, wie zu tun, dass es vielleicht einfacher. Danke!
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das klingt wie ein großer Kandidat für einen WCF - (oder andere Typen) - Dienst auf dem server. Das würde Methoden zu tun, was Sie wollen. Die client-app würde den service rufen und sagen "diese Datei auf dem server", und das service-code ist das, was tatsächlich gespeichert wird. Da läuft es auf dem server der service-Benutzer über die erforderlichen Berechtigungen verfügen, ohne die client-Seite die Erlaubnis Fragen, Sie stünden jetzt vor. Der client-Benutzer nicht brauchen keine Privilegien, außer der Fähigkeit, eine Verbindung zum service herzustellen.
Der andere Vorteil ist, dass Sie nicht über einen admin-account-Passwort in Ihrem client-app, die mithilfe dieser Methode, die zu entfernen wird ein ziemlich ernstes Sicherheitsproblem dar.
Können Sie nicht erheben Berechtigungen, die auf eine ClickOnce-Anwendung, und es kann nicht alles tun, die Administratorrechte erfordert. Die Idee, einen WCF-Dienst ist interessant. Die einzige andere Sache, die Sie tun können, ist enthalten eine exe-Datei in der Implementierung das tut, was Sie wollen, es zu tun, und führen Sie es mit erhöhten rechten aus der ClickOnce-app.
Ja, das ist richtig, können Sie nicht ausführen einer ClickOnce-Anwendung mit erhöhten rechten, aber es kann Auftakt eines Prozesses, dann kann Erhöhung von Berechtigungen selbst.