0

Ich habe eine Winform-Anwendung implementiert. Ich speichere die Benutzereinstellungen für die Anwendung in der Konfigurationsdatei zusammen mit der Konfigurationsdatei unter dem OrdnerConfiguration.Save Methode wirft Unbefugter Zugriff Fehler, wenn die Konfigurationsdatei im umgeleiteten Ordner

C der Konfiguration class.I speichert die exe mit: \ Users \\ AppData \ Local

Das funktioniert im Normalfall gut, aber ich habe ein Problem in Fällen, in denen der Benutzer den Appdata-Ordner auf eine Serveradresse umgeleitet hat. In diesem Fall bekomme ich die Ausnahme:

Es wurde versucht, eine nicht autorisierte Operation auszuführen.

fand ich einige ähnliche Fragen hier aber keiner von ihnen irgendwelche zufriedenstellend answers.I versucht, die Konfigurationsdatei zu löschen, bevor Sie den Befehl ausführen Configuration.Save aber das gibt die Ausnahme:

Die Konfigurationsdatei wurde von einem anderen Programm geändert.

Also, wie löse ich dieses Problem. Hier ist mein Code, um die Konfigurationsdatei zu aktualisieren:

string exePath = Path.Combine(Path.GetDirectoryName(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)), @"Local\<folder name>\<exe file name>"); 
Configuration configFile = ConfigurationManager.OpenExeConfiguration(exePath); 
if (configFile.AppSettings.Settings[key] != null) 
{ 
    configFile.AppSettings.Settings.Remove(key); 
} 
if (param) 
{ 
    configFile.AppSettings.Settings.Add(key, value); 
} 
configFile.Save(ConfigurationSaveMode.Modified); 

Hier ist der Stack-Trace für die Ausnahme:

at System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType 
type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl)  
at System.Security.AccessControl.NativeObjectSecurity.Persist(String 
name, SafeHandle handle, AccessControlSections includeSections, Object 
exceptionContext)  
at System.Security.AccessControl.NativeObjectSecurity.Persist(String 
name, AccessControlSections includeSections, Object exceptionContext) 
at System.Security.AccessControl.NativeObjectSecurity.Persist(String 
name, AccessControlSections includeSections)  
at System.Security.AccessControl.FileSystemSecurity.Persist(String 
fullPath)  
at System.IO.File.SetAccessControl(String path, FileSecurity fileSecurity)  
at System.Configuration.Internal.WriteFileContext.DuplicateTemplateAttributes(String source, String destination)  
at System.Configuration.Internal.WriteFileContext.DuplicateFileAttributes(String source, String destination)  
at System.Configuration.Internal.WriteFileContext.Complete(String 
filename, Boolean success)  
at System.Configuration.Internal.InternalConfigHost.StaticWriteCompleted(String 
streamName, Boolean success, Object writeContext, Boolean assertPermissions) at System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext, Boolean assertPermissions)  
at System.Configuration.Internal.InternalConfigHost.System.Configuration.Internal.IInternalConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext)  
at 
System.Configuration.Internal.DelegatingConfigHost.WriteCompleted(String streamName, Boolean success, Object writeContext)  
at System.Configuration.UpdateConfigHost.WriteCompleted(String 
streamName, Boolean success, Object writeContext)  
at System.Configuration.MgmtConfigurationRecord.SaveAs(String filename, 
ConfigurationSaveMode saveMode, Boolean forceUpdateAll)  
at System.Configuration.Configuration.SaveAsImpl(String filename, ConfigurationSaveMode saveMode, Boolean forceSaveAll)  
at UtilityClasses.ConfigurationHandler.UpdateConfigFile(String key, String value, Boolean param) 
+0

Teilen Sie Ihren Code bitte –

+0

@ S.Petrosov Code hinzugefügt. –

+0

Ich denke, dass das Problem ist, dass der Benutzer mit welcher Anwendung nur keine Berechtigung für diesen Pfad hat –

Antwort

0

Sie haben zwei Möglichkeiten, dieses Problem zu lösen:
1. Teilen Netzwerkordner, so dass keine Autorisierung für Benutzer desselben Netzwerks möglich ist.
2. Verwenden Sie Benutzeranmeldeinformationen, um die Autorisierung zu übergeben und eine Verbindung zum Netzwerkpfad herzustellen.

+0

Aber es scheint nicht ein Verbindungsproblem sein, da ich auch viele XML-und Textdateien auf dem gleichen Pfad erstellen und ändern . Und sie geben kein Problem. Nur die Konfigurationsdatei gibt Probleme. –

+0

Ich habe Stack-Trace für das Problem hinzugefügt. –

Verwandte Themen