Solved

Set Write Permissions for a Group - VB.NET

Posted on 2009-07-02
2
344 Views
Last Modified: 2013-11-26
Hi Experts Exchange!

I'm trying to do something that seems pretty simple to me, however, after a couple hours of research I can't seem to find exactly what I need.

I'm creating an xml file, to store some settings, in the [My.Computer.FileSystem.SpecialDirectories.AllUsersApplicationData] directory of windows.  The file is created without any problems, however, the "Users" group is only given Read & Excecute permissions to the file.  So, when another user runs my program and attempts to modify the the .xml file, a security permissions error is thrown.  

Here's what I need to do...
I need to change the file's permissions for the "Users" group, and allow write access to the .xml file.  I'd also like to do this immediately after the file's creation.

Just an FYI; this in no way creates any security threat for my application.  Not only is my .xml file encrypted, but the settings stored inside the .xml file are of an inconsequential nature.  It's encrypted simply for the peace of mind associated with basic security through obfuscation.

That's pretty straight forward right?  I'm sure plenty of you guys have changed windows security permissions at the group level before.

A note...I did try assigning the attribute <PermissionSetAttribute(SecurityAction.Demand, Name:="FullTrust")> to my methods, however this was not successful.

If you have any questions, please feel free to ask away!

Much thanks!   =)
0
Comment
Question by:OFGemini
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
2 Comments
 
LVL 41

Accepted Solution

by:
graye earned 500 total points
ID: 24807667
Here is an example of doing precisely that...
You'd use it like this:
Imports System.Security.AccessControl
            Dim domainSid As New Security.Principal.SecurityIdentifier("S-1-0-0")
            Dim Users As New Security.Principal.SecurityIdentifier(Security.Principal.WellKnownSidType.BuiltinUsersSid, domainSid)
            AddFileSecurity(wp_file, Users, FileSystemRights.Modify, AccessControlType.Allow)

Imports System.Security.AccessControl
Imports System.Security.Principal
 
    '
    ' Adds an ACL entry on the specified file for the specified account.
    '
    Public Sub AddFileSecurity(ByVal fileName As String, ByVal account As SecurityIdentifier, ByVal rights As FileSystemRights, ByVal controlType As AccessControlType)
        ' Get a FileSecurity object that represents the current security settings.
        Dim fSecurity As FileSecurity = File.GetAccessControl(fileName)
 
        ' Create a new rule
        Dim accessRule As New FileSystemAccessRule(account, rights, controlType)
 
        ' Add the FileSystemAccessRule to the security settings. 
        fSecurity.AddAccessRule(accessRule)
 
        ' Set the new access settings.
        File.SetAccessControl(fileName, fSecurity)
    End Sub

Open in new window

0

Featured Post

Why You Need a DevOps Toolchain

IT needs to deliver services with more agility and velocity. IT must roll out application features and innovations faster to keep up with customer demands, which is where a DevOps toolchain steps in. View the infographic to see why you need a DevOps toolchain.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Welcome my friends to the second instalment and follow-up to our Minify and Concatenate Your Scripts and Stylesheets (http://www.experts-exchange.com/Programming/Languages/.NET/ASP.NET/A_4334-Minify-and-Concatenate-Your-Scripts-and-Stylesheets.html)…
This article describes relatively difficult and non-obvious issues that are likely to arise when creating COM class in Visual Studio and deploying it by professional MSI-authoring tools. It is assumed that the reader is already familiar with the cla…

732 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question