myCSharp.de - DIE C# und .NET Community
Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 
 | Suche | FAQ

» Hauptmenü
myCSharp.de
» Startseite
» Forum
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Suche
» Regeln
» Wie poste ich richtig?
» Forum-FAQ

Mitglieder
» Liste / Suche
» Wer ist wo online?

Ressourcen
» openbook: Visual C#
» openbook: OO
» Microsoft Docs

Team
» Kontakt
» Übersicht
» Wir über uns

» myCSharp.de Diskussionsforum
Du befindest Dich hier: Community-Index » Diskussionsforum » Entwicklung » GUI: Windows-Forms » Schreiben einer app.config File auf einem Netzlaufwerk mit eingeschränkten Rechten
Letzter Beitrag | Erster ungelesener Beitrag Druckvorschau | Thema zu Favoriten hinzufügen

Antwort erstellen
Zum Ende der Seite springen  

Schreiben einer app.config File auf einem Netzlaufwerk mit eingeschränkten Rechten

 
Autor
Beitrag « Vorheriges Thema | Nächstes Thema »
Ummy Ummy ist männlich
myCSharp.de-Mitglied

Dabei seit: 11.07.2019
Beiträge: 1
Entwicklungsumgebung: Visual Studio (C#)
Herkunft: Österreich


Ummy ist offline

Schreiben einer app.config File auf einem Netzlaufwerk mit eingeschränkten Rechten

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Hallo Zusammen,

Ich habe folgendes Problem.
In meiner Anwendung (C# Windows Forms) verwende ich die app.config um eine COM-Schnittstelle zu speichern (nur der string "COM3" wird gespeichert).

Lokal mit Adminrechten funktioniert alles einwandfrei und man kann die COM ändern so das beim nächsten Start wieder mit dieser COM gearbeitet wird.

Nun habe ich das Problem das die Anwendung auf einem Netzlaufwerk ausgeführt werden soll, wobei hier die Rechte eingeschränkt sind. Die Idee dahinter ist, das die Anwendung von mehreren PC genutzt werden kann, ohne das etwas installiert werden muss. (Die Anwendung wird immer nur einmal gestartet)
Das "Lesen" der app.config funktioniert auch auf dem Netzlaufwerk, allerdings nicht das schreiben. Hier bekommt man immer eine Fehlermeldung:

Fehlermeldung:
System.UnauthorizedAccessException: Es wurde versucht, einen nicht autorisierten Vorgang auszuführen.
bei System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)
bei System.Security.AccessControl.NativeObjectSecurity.Persist(String name, SafeHandle handle, AccessControlSections includeSections, Object exceptionContext)
bei System.Security.AccessControl.NativeObjectSecurity.Persist(String name, AccessControlSections includeSections, Object exceptionContext)
bei System.Security.AccessControl.FileSystemSecurity.Persist(String fullPath)
bei System.Configuration.Internal.WriteFileContext.Complete(String filename, Boolean success)
bei System.Configuration.Internal.InternalConfigHost.StaticWriteCompleted(String streamName, Boolean success, Object writeContext, Boolean assertPermissions)
bei System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext)
bei System.Configuration.UpdateConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext)
bei System.Configuration.MgmtConfigurationRecord.SaveAs(String filename, ConfigurationSaveMode saveMode, Boolean forceUpdateAll)
bei Testsoftware_Blum_SmartMotor.ChargeForm.AddUpdateAppSettings(String key, String value) in E:\PROJECTS\Blum_Pruefaufbau\SmartMotor_TestAdapter\Software\Testsoftware_B
lum_SmartMotor\Testsoftware_Blum_SmartMotor\ChargeForm.cs:Zeile 42.
bei Testsoftware_Blum_SmartMotor.ChargeForm.buttonOkay_Click(Object sender, EventArgs e) in E:\PROJECTS\Blum_Pruefaufbau\SmartMotor_TestAdapter\Software\Testsoftware_B
lum_SmartMotor\Testsoftware_Blum_SmartMotor\ChargeForm.cs:Zeile 24.
bei System.Windows.Forms.Control.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnClick(EventArgs e)
bei System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
bei System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
bei System.Windows.Forms.Control.WndProc(Message& m)
bei System.Windows.Forms.ButtonBase.WndProc(Message& m)
bei System.Windows.Forms.Button.WndProc(Message& m)
bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

Ich hab auch schon versucht das app.manifest zu ändern, aber leider kein Erfolg. ( <requestedExecutionLevel level="requireAdministrator" uiAccess="false" />)

Gibt es sonst noch eine Möglichkeit hier etwas zu machen?
Die Anwendung bekommt kurzfristig Adminrechte für die Operation, z.B.?

Vielen Dank für eure Tipps

Gruß
Michael
11.07.2019 17:06 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Abt
myCSharp.de-Team

avatar-4119.png


Dabei seit: 20.07.2008
Beiträge: 12.794
Herkunft: Stuttgart/Stockholm


Abt ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Deine Idee im gesamten entspricht nicht dem Konzept, das hier .NET verfolgt.
Desktop-Applikationen über das Netzwerk gleichzeitig mehreren Usern verfügbar zu machen war noch nie eine gute Idee - nie; aus Bequemlichkeit aber oft genutzt.

Ein Netzwerklaufwerk gilt in Windows per default immer als unsichere Quelle - Appliktionen und Configs haben dort erstmal nichts zu suchen.
Wer Adminrechte hat, kann Deine Anwendung problemlos komprimittieren, die Exe ersetzen und so Trojaner im Unternehmensnetzwerk verteilen.
Man kann jedoch Laufwerke als sicher definieren; zB via Code Access Security - alles andere als zu empfehlen.

Für die Zukunft: Du wirst die Config oft nicht überschreiben können, weil sie auch von anderen Usern verwendet wird - weil eben die Applikation geshared wird.
Eines der Nebeneffekte, wenn man Applikationen über diese Art "verteilen" will.

Aber hier kann auch einfach das Permission Konzept eurer Netzwerklaufwerke dazwischen funken.

Das alles hat man aber nicht, wenn man Applikationen sauber und paketetiert verteilt.
11.07.2019 21:18 Beiträge des Benutzers | zu Buddylist hinzufügen
T-Virus T-Virus ist männlich
myCSharp.de-Mitglied

Dabei seit: 17.04.2008
Beiträge: 1.237
Entwicklungsumgebung: Visual Studio, Codeblocks, Edi
Herkunft: Nordhausen, Nörten-Hardenberg


T-Virus ist offline Füge T-Virus Deiner Kontaktliste hinzu

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Was wäre den das genaue Ziel der Schreibvprgänge?
Nur das speichern des selbst gewählten COM Ports in der Config?
Hier könntest du auch im einfachsten Fall einfach eine Textdatei anlegen und dort den Namen drin speichern.
Gibt es die Datei nicht oder ist diese leer/ungültiger Port Name, dann kannst du auch einfach auf den Default Port auf der Config zurückgreifen.

Wenn dein Programm mehrere solcher Einstellungen nutzt, kannst du auch per Sqlite dir eine lokale Config.db anlegen und die Einstellungen entsprechend in einer lokalen Sqlite Datenbank speichern.
Dann hast du es auch gleich sauber gelöst.

Hier sei aber Abts Ansage klar zu beachten.
Das Programm samt Config sollte dann auch auf jeden Rechner verteilt werden.
Sowas lässt sich auch mit entsprechenden Mitteln ohne Probleme umsetzen.

T-Virus
12.07.2019 11:15 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Th69
myCSharp.de-Poweruser/ Experte

avatar-2578.jpg


Dabei seit: 01.04.2008
Beiträge: 3.277
Entwicklungsumgebung: Visual Studio 2015/17


Th69 ist offline

Beitrag: beantworten | zitieren | editieren | melden/löschen       | Top

Es macht ja auch keinen Sinn, daß die COM-Einstellung auf dem Netzlaufwerk gespeichert wird, denn es ist ja schließlich eine lokale Einstellung jedes Rechners!
Ummy, hast du denn diese Eigenschaft als Scope "User" angelegt? Dann sollte diese jeweils lokal auf jedem Rechner als "user.config" unter "AppData\Local\<ProgramName>" automatisch abgespeichert werden.
12.07.2019 12:58 E-Mail | Beiträge des Benutzers | zu Buddylist hinzufügen
Baumstruktur | Brettstruktur       | Top 
myCSharp.de | Forum
Antwort erstellen


© Copyright 2003-2019 myCSharp.de-Team | Impressum | Datenschutz | Alle Rechte vorbehalten. | Dieses Portal verwendet zum korrekten Betrieb Cookies. 20.07.2019 07:12