Solved

Set Write Permissions for a Group - VB.NET

Posted on 2009-07-02
2
329 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
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

IT, Stop Being Called Into Every Meeting

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

Join & Write a Comment

In my previous two articles we discussed Binary Serialization (http://www.experts-exchange.com/A_4362.html) and XML Serialization (http://www.experts-exchange.com/A_4425.html). In this article we will try to know more about SOAP (Simple Object Acces…
Parsing a CSV file is a task that we are confronted with regularly, and although there are a vast number of means to do this, as a newbie, the field can be confusing and the tools can seem complex. A simple solution to parsing a customized CSV fi…
Get a first impression of how PRTG looks and learn how it works.   This video is a short introduction to PRTG, as an initial overview or as a quick start for new PRTG users.
This tutorial demonstrates a quick way of adding group price to multiple Magento products.

757 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

Need Help in Real-Time?

Connect with top rated Experts

17 Experts available now in Live!

Get 1:1 Help Now