Murad Mahmud

Murad Mahmud

  • 1.1k
  • 544
  • 15.7k

attempted to perform an unauthorized operation in c# windows

Dec 22 2013 5:42 AM
I have make a project that work properly when visual studio run as Administrator.
 
but this give error when visual studio run without Administrator.
 
here is Code-------------------------
 
using System;
using System.IO;
using System.Management;
using System.Security;
using System.Security.AccessControl;
using System.Security.Permissions;
using System.Security.Principal;
using System.Windows.Forms;
using System.Diagnostics;
using System.Runtime.InteropServices;
using Microsoft.Win32;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
GetUsers();
}

public void GetUsers()
{
SelectQuery sQuery = new SelectQuery("Win32_UserAccount", "Domain='" + Environment.UserDomainName.ToString() + "'");
try
{
ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQuery);
foreach (ManagementObject mObject in mSearcher.Get())
{

comboBox1.Items.Add(mObject["Name"]);
}
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString());
}
}


private void Form1_Load(object sender, EventArgs e)
{


}

private void button1_Click(object sender, EventArgs e)
{
FolderBrowserDialog myFolderBrowserDialog = new FolderBrowserDialog();
myFolderBrowserDialog.ShowDialog();
textBox1.Text = myFolderBrowserDialog.SelectedPath.ToString();
}

private void button2_Click(object sender, EventArgs e)
{
//try
//{

string User = Environment.UserDomainName + "\\" + comboBox1.SelectedItem.ToString();

AddDirectorySecurity(textBox1.Text,User,FileSystemRights.CreateFiles,AccessControlType.Deny );
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.WriteData, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.Write, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.WriteAttributes, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.WriteExtendedAttributes, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.DeleteSubdirectoriesAndFiles, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.Delete, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.CreateDirectories, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.AppendData, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.ExecuteFile, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.ReadAttributes, AccessControlType.Deny);
AddDirectorySecurity(textBox1.Text, User, FileSystemRights.Traverse, AccessControlType.Deny);


string path = Environment.GetFolderPath(Environment.SpecialFolder.Desktop);

// ApplyNewDesktopPath(path, @"D:\\Desktop");

MessageBox.Show("Permissions Altered Successfully");
// Process.Start("shutdown.exe", "-r -t 0");


//}
//catch (Exception ex)
//{
// MessageBox.Show(ex.ToString());

//}

}
public static void AddDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{
DirectoryInfo dInfo = new DirectoryInfo(FileName);
DirectorySecurity dSecurity = dInfo.GetAccessControl(AccessControlSections.Owner);
dSecurity.AddAccessRule(new FileSystemAccessRule(Account,Rights,ControlType));

// dSecurity.SetOwner(new SecurityIdentifier(WellKnownSidType.AccountAdministratorSid.ToString()));

SecurityIdentifier sid = new SecurityIdentifier(WellKnownSidType.BuiltinAdministratorsSid, null);
dSecurity.SetOwner(sid);

dInfo.SetAccessControl(dSecurity);

}

private void button3_Click(object sender, EventArgs e)
{
try
{
string User = Environment.UserDomainName + "\\" + comboBox1.SelectedItem.ToString();

RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.FullControl, AccessControlType.Deny);


RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.CreateFiles, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.WriteData, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.Write, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.WriteAttributes, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.WriteExtendedAttributes, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.DeleteSubdirectoriesAndFiles, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.Delete, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.CreateDirectories, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.AppendData, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.ExecuteFile, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.ReadAttributes, AccessControlType.Deny);
RemoveDirectorySecurity(textBox1.Text, User, FileSystemRights.Traverse, AccessControlType.Deny);


MessageBox.Show("Permissions Remove Successfully");
}
catch (Exception ex)
{

MessageBox.Show(ex.ToString());
}

}
public static void RemoveDirectorySecurity(string FileName, string Account, FileSystemRights Rights, AccessControlType ControlType)
{

DirectoryInfo dInfo = new DirectoryInfo(FileName);
DirectorySecurity dSecurity = dInfo.GetAccessControl();
dSecurity.RemoveAccessRule(new FileSystemAccessRule(Account, Rights, ControlType));
dInfo.Create(dSecurity);
}

}
}
 
 
please help anybody.

Answers (3)