|
Firstly, this looks surprisingly like a homework question.
Secondly, this is very simple.
Thirdly, it would help if you specified what valid inputs are (I know I could read them from the code but I'm lazy).
|
|
|
|
|
Write a static function that checks for a valid input entry. Then for each entry, pass it through the function
Example function
public static bool IsValidEntry(int entry)
{
switch(entry)
{
case 1:
return false;
break;
case 2:
return true;
break;
default:
return false;
}
}
|
|
|
|
|
Hi All,
I want to check in advance on Write permission to a Directory for a sanity check. It is similar to File.Exist() and Directory.Exist().
I haven't been able to get the keywords correct to find the function. So far, I seem to be hitting on CAS (a miserable embodiment for System Administrators).
Can anyone point me in the proper direction?
Jeff
|
|
|
|
|
Here's what I have hacked so far. There are two problems.
1) I can't seem to work with GetAccessRule()
2) I don't know how to make the compare, even though I believe I have all the players assembled.
Jeff
DirectoryInfo information = new DirectoryInfo(directory);
DirectorySecurity security = information.GetAccessControl();
WindowsIdentity user = WindowsIdentity.GetCurrent();
SecurityIdentifier sid = user.User;
// Passing sid below will not compile
AuthorizationRuleCollection rules =
security.GetAccessRules(false, true, /*???*/);
// How is the check performed?
if( HasWriteAccess( rules ) )
|
|
|
|
|
This guy seems to have done the same thing... http://www.eggheadcafe.com/software/aspnet/30271754/check-users-directory-per.aspx[^]
"On one of my cards it said I had to find temperatures lower than -8. The numbers I uncovered were -6 and -7 so I thought I had won, and so did the woman in the shop. But when she scanned the card the machine said I hadn't.
"I phoned Camelot and they fobbed me off with some story that -6 is higher - not lower - than -8 but I'm not having it."
-Tina Farrell, a 23 year old thicky from Levenshulme, Manchester.
|
|
|
|
|
Hi Martin,
martin_hughes wrote: This guy seems to have done the same thing
I ran across that earlier. His implementation is flawed. He does not consider a User Account ACE versus a Group ACE.
This means if an object has a DACL with a User Allow _and_ a Group Deny, the code will incorrectly return the object is not accessible.
Jeff
|
|
|
|
|
Hi Jeff,
I've been fiddling a bit - I haven't come up with a total solution (I am a bit hung over), but hopefully it's enough to give you a head start on the syntax etc... On with the code!
static void UserRights()
{
DirectorySecurity ds = Directory.GetAccessControl(@"C:\test");
WindowsIdentity user = WindowsIdentity.GetCurrent();
bool IsInGroupWithWriteAcces = false;
IdentityReferenceCollection irc = user.Groups;
for (int i = 0; i < irc.Count; i++)
{
foreach (AccessRule ar in ds.GetAccessRules(true, true,
typeof(System.Security.Principal.SecurityIdentifier)))
{
FileSystemAccessRule fs = (FileSystemAccessRule)ar;
if ((fs.AccessControlType == AccessControlType.Allow
&& (fs.FileSystemRights & FileSystemRights.Write) == FileSystemRights.Write) &&
fs.IdentityReference == irc[i])
{
Console.WriteLine("Yay, we're in a group with Write Access!");
}
else
{
Console.WriteLine("Whoops!");
}
}
}
return IsInGroupWithWriteAcces;
}
And to check if a User Account has permissions, all you need do is remove the for loop and simply test against the user.User SID.
static void UserRights2()
{
DirectorySecurity ds = Directory.GetAccessControl(@"C:\test");
WindowsIdentity user = WindowsIdentity.GetCurrent();
bool IsInGroupWithWriteAcces = false;
foreach (AccessRule ar in ds.GetAccessRules(true, true,
typeof(System.Security.Principal.SecurityIdentifier)))
{
FileSystemAccessRule fs = (FileSystemAccessRule)ar;
if ((fs.AccessControlType == AccessControlType.Allow
&& (fs.FileSystemRights & FileSystemRights.Write) == FileSystemRights.Write) &&
fs.IdentityReference == user.User)
{
Console.WriteLine("Yay, we're a User with Write Access!");
}
else
{
Console.WriteLine("Whoops!");
}
}
}
The rest should be just a matter of working out in which order things are applied/take precedence.
Cheers,
Martin
"On one of my cards it said I had to find temperatures lower than -8. The numbers I uncovered were -6 and -7 so I thought I had won, and so did the woman in the shop. But when she scanned the card the machine said I hadn't.
"I phoned Camelot and they fobbed me off with some story that -6 is higher - not lower - than -8 but I'm not having it."
-Tina Farrell, a 23 year old thicky from Levenshulme, Manchester.
modified on Friday, December 28, 2007 4:51:42 PM
|
|
|
|
|
The turkey is sitting heavily below the Christmas Pud... but I really like 3.0's auto implementing properties
"On one of my cards it said I had to find temperatures lower than -8. The numbers I uncovered were -6 and -7 so I thought I had won, and so did the woman in the shop. But when she scanned the card the machine said I hadn't.
"I phoned Camelot and they fobbed me off with some story that -6 is higher - not lower - than -8 but I'm not having it."
-Tina Farrell, a 23 year old thicky from Levenshulme, Manchester.
|
|
|
|
|
martin_hughes wrote: but I really like 3.0's auto implementing properties
3.5 was released last week. But I'm further behind - I'm still using 2.0
|
|
|
|
|
.Net 3.5 did... but the language is C# 3.0! Yay for confusion!
"On one of my cards it said I had to find temperatures lower than -8. The numbers I uncovered were -6 and -7 so I thought I had won, and so did the woman in the shop. But when she scanned the card the machine said I hadn't.
"I phoned Camelot and they fobbed me off with some story that -6 is higher - not lower - than -8 but I'm not having it."
-Tina Farrell, a 23 year old thicky from Levenshulme, Manchester.
|
|
|
|
|
Anything interesting other than LINQ?
|
|
|
|
|
Semi-tied in to LINQ, but extension methods are pretty sweet too!
"On one of my cards it said I had to find temperatures lower than -8. The numbers I uncovered were -6 and -7 so I thought I had won, and so did the woman in the shop. But when she scanned the card the machine said I hadn't.
"I phoned Camelot and they fobbed me off with some story that -6 is higher - not lower - than -8 but I'm not having it."
-Tina Farrell, a 23 year old thicky from Levenshulme, Manchester.
|
|
|
|
|
I have met this exercise in a book I am reading :
Develop a C# application that will determine whether any of several department-store customers has exceeded the credit limit on a charge account. For each customer, the following facts are available:
account number
balance at the beginning of the month
total of all items charged by the customer this month
total of all credits applied to the customer's account this month
allowed credit limit.
The application should input all these facts as integers, calculate the new balance (= beginning balance + charges credits), display the new balance and determine whether the new balance exceeds the customer's credit limit. For those customers whose credit limit is exceeded, the application should display the message "Credit limit exceeded". Use sentinel-controlled repetition to obtain the data for each account.
I have tried to code this solution and I came to this source code :
CustomerTest.cs :
using System;<br />
<br />
public class CustomerTest<br />
{<br />
public static void Main(string[] args)<br />
{<br />
int account_Number;<br />
int initial_Balance;<br />
int total_Month_Items;<br />
int total_Month_Credits;<br />
int credit_Limit;<br />
<br />
<br />
Customer myCustomer = new Customer(0, 0, 0, 0, 0);<br />
<br />
<br />
Console.Write("Enter account number or -1 to quit : ");<br />
account_Number = Convert.ToInt32(Console.ReadLine());<br />
<br />
while (account_Number != -1)<br />
{<br />
Console.Write("Enter balance at the beggining of the month : ");<br />
initial_Balance = Convert.ToInt32(Console.ReadLine());<br />
<br />
Console.Write("Enter total of all items charged by the customer this month : ");<br />
total_Month_Items = Convert.ToInt32(Console.ReadLine());<br />
<br />
Console.Write("Enter total of all credits applied to the customer's account this month : ");<br />
total_Month_Credits = Convert.ToInt32(Console.ReadLine());<br />
<br />
Console.Write("Enter customer's credit limit : ");<br />
credit_Limit = Convert.ToInt32(Console.ReadLine());<br />
<br />
myCustomer.AccountNumber = account_Number;<br />
myCustomer.InitialBalance = initial_Balance;<br />
myCustomer.TotalMonthItems = total_Month_Items;<br />
myCustomer.TotalMonthCredit = total_Month_Credits;<br />
myCustomer.CreditLimit = credit_Limit;<br />
<br />
myCustomer.DetermineNewBalance();<br />
<br />
}<br />
}<br />
}
Customer.cs :
using System;<br />
<br />
public class CustomerTest<br />
{<br />
public static void Main(string[] args)<br />
{<br />
int account_Number;<br />
int initial_Balance;<br />
int total_Month_Items;<br />
int total_Month_Credits;<br />
int credit_Limit;<br />
<br />
<br />
Customer myCustomer = new Customer(0, 0, 0, 0, 0);<br />
<br />
<br />
Console.Write("Enter account number or -1 to quit : ");<br />
account_Number = Convert.ToInt32(Console.ReadLine());<br />
<br />
while (account_Number != -1)<br />
{<br />
Console.Write("Enter balance at the beggining of the month : ");<br />
initial_Balance = Convert.ToInt32(Console.ReadLine());<br />
<br />
Console.Write("Enter total of all items charged by the customer this month : ");<br />
total_Month_Items = Convert.ToInt32(Console.ReadLine());<br />
<br />
Console.Write("Enter total of all credits applied to the customer's account this month : ");<br />
total_Month_Credits = Convert.ToInt32(Console.ReadLine());<br />
<br />
Console.Write("Enter customer's credit limit : ");<br />
credit_Limit = Convert.ToInt32(Console.ReadLine());<br />
<br />
myCustomer.AccountNumber = account_Number;<br />
myCustomer.InitialBalance = initial_Balance;<br />
myCustomer.TotalMonthItems = total_Month_Items;<br />
myCustomer.TotalMonthCredit = total_Month_Credits;<br />
myCustomer.CreditLimit = credit_Limit;<br />
<br />
myCustomer.DetermineNewBalance();<br />
<br />
}<br />
}<br />
}
The problem is in the first file when I use the sentinel-controlled repetition because I get no account number question at the second loop.Any ideas how to fix this one?Thnx!
|
|
|
|
|
A loop (for, while, ...) repeats whatever is inside, not what is in front of it.
|
|
|
|
|
Hello everybody
I ask everyone who can disign a simple paint software lookalike winXP
of course I need the source&code in C#
As soon as possible,Please
alirahimei@yahoo.com
Thank you
|
|
|
|
|
The CodeProject site holds articles about almost anything, and has search facilities.
You must use them ASAP. Now. Urgently.
|
|
|
|
|
Luc Pattyn wrote: Urgently.
Oh my, the u-word
"Real programmers just throw a bunch of 1s and 0s at the computer to see what sticks" - Pete O'Hanlon
|
|
|
|
|
Hello everybody
I ask everyone who can disign a simple paint software lookalike winXP
of course I need the source&code in C#
As soon as possible,Please
|
|
|
|
|
Did you search google? There is an open source program much better then paint
|
|
|
|
|
hi freind i want to change the Border the color of the Text box . friend of mine give me advice to use User Controland change the back color of the user Control.
Now the question is how i can User control in myForm
wasim khan
|
|
|
|
|
Dear Wasim,
instead of making user control write this code in Paint Event of Form
foreach (Control acontrol in this.Controls)
{
if (acontrol is TextBox)
{
Pen myPen = new Pen(Color.White, 4.0F);
e.Graphics.DrawRectangle(myPen, new Rectangle(acontrol.Bounds.X, acontrol.Bounds.Y, acontrol.Bounds.Width, acontrol.Bounds.Height));
e.Graphics.Dispose();
}
}
hope this will help
Becoming Programmer...
|
|
|
|
|
HI xmen_xwk
there is a little bit problem that Text box controls are not found the loop execute each time but it
never move inside the body of the loop the Text Boxes are inside the Group
wasim khan
|
|
|
|
|
as far as i understood that you were saying that textboxes are in groupbox
if yes, then just change this.Controls in this line :
foreach (Control acontrol in this.Controls)
with GroupName
foreach (Control acontrol in <<write group name>>)
Becoming Programmer...
|
|
|
|
|
Hi, i'd like to have a menuitem
that ptints the screen directly to printer,
any idea where do i start
i did not found any thing Simple here
anyone?
THANKS
Have Fun
Never forget it
|
|
|
|
|
There are many articles here on codeproject that describe how to take screenshot programmatically, why don't you look through them?
|
|
|
|