none
Como dar permissao para alterar o meu app.config em tempo de projeto? RRS feed

  • Pergunta

  • Boa tarde pessoal,

    estou tendo um problema no momento em que tento alterar a connection string em tempo de projeto no meu sistema.

    Isto acontece no momento em que altero minha connection string em tempo de projeto, para que em meu cliente eu possa setar o banco de dados de acordo com um xml de configuração do meu sistema que contem a connection string do banco. Em minha maquina de desenvolvimento não tenho este tipo de problema, este problema só acontece quando executo o sistema na maquina do meu cliente. 

    Erro :

    System.UnauthorizedAccessException: Attempted to perform an unauthorized operation. at System.Security.AccessControl.Win32.SetSecurityInfo(ResourceType type, String name, SafeHandle handle, SecurityInfos securityInformation, SecurityIdentifier owner, SecurityIdentifier group, GenericAcl sacl, GenericAcl dacl) at ...

    Pesquisei como resolver e não estou conseguindo solucionar, porque pelo que li, este problema é porque nao tenho permissao de alterar o arquivo na maquina do cliente. tentei usar este codigo abaixo mas nao esta dando certo.

    codigo .:

                    //Set security for EveryOne Group
                    
                    SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
                    IdentityReference userIdentity = sid.Translate(typeof(NTAccount));
    
                    var AccessRule_AllowEveryOne = new FileSystemAccessRule(userIdentity, FileSystemRights.FullControl, AccessControlType.Allow);
                    var securityDescriptor = new FileSecurity();
                    securityDescriptor.SetAccessRule(AccessRule_AllowEveryOne);
                    File.SetAccessControl("SistemaCTe.exe.config", securityDescriptor); 
    
                    // Alterando a connectionstring do app.Config
                    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                    config.ConnectionStrings.ConnectionStrings["BDNovoAtualizadoEntities"].ConnectionString = "metadata=res://*/Model1.csdl|res://*/Model1.ssdl|res://*/Model1.msl;provider=Devart.Data.PostgreSql;provider connection string= " + Conexao;
                    config.Save(ConfigurationSaveMode.Full);
    
                    // ler novamente a seção do HD
                    ConfigurationManager.RefreshSection("connectionStrings");

    Por favor se alguem puder me dar uma luz, serei muito grato.

    segunda-feira, 2 de dezembro de 2013 17:54

Todas as Respostas