|
how do I check if a file with a given path is read only?
|
|
|
|
|
Use =>
System.IO.File.GetAttributes(string pathToFile);
and then compare it using System.IO.FileAttributes enum...
|
|
|
|
|
But the following lines never give anything but '1'. How am I to distinguish between read-only and read/write files?
System.IO.FileAttributes att = System.IO.File.GetAttributes( this.currentFolder);
MessageBox.Show(att.CompareTo(System.IO.FileAttributes.ReadOnly)+"");
|
|
|
|
|
Bitwise conditions:
FileAttributes attribs = File.GetAttributes("file.txt");
if ((attribs & FileAttributes.ReadOnly) != 0) Console.WriteLine("Read-only");
else Console.WriteLine("Read-write");
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
Thank you, but now I only get 'False'. I'm changing the file's read-only attribute by hand because my program does not create or write to these files directly, but my program does need to know if the file it's dealing with is read-only or not. Any suggestions?
|
|
|
|
|
Judging by your variable name, you're trying to get attributes for a directory. Directories don't have a read-only attribute. Only their containing files do. In fact, directories don't really have many attributes at all.
Trust me, the code works. We use it a lot in our application. You might also want to take a look at the FileInfo class which provides the same information in a different way.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
your right; I grabed the wrong variable. Thank you.
|
|
|
|
|
I have a placeholder sitting on a page with a button above it. When the button is clicked, I want it to add a textbox and to the placeholder so I have the following code execute for the onclick...
<br />
TextBox temp = new TextBox();<br />
<br />
temp.TextMode = TextBoxMode.MultiLine;<br />
temp.CssClass = "txtArea";<br />
<br />
temp.ID = "txtArea" + phModNotes.Controls.Count.ToString();<br />
<br />
phModNotes.Controls.Add(temp);<br />
The expectation being that the controls will be named sequentially starting at txtArea0 and counting up. However, everytime I click the button, phModNotes gets reloaded and is empty.
|
|
|
|
|
|
Hello all.
I have encountered some difficulties while writing a program that is supposed to use memcpy. To be honest, I can't get it to work at all, and I don't have a clue what I'm doing wrong.
Here's the most important part of the code:
<br />
DllImport("msvcrt.dll")]<br />
public static extern unsafe void memcpy(void* to, void* from, int len);<br />
<br />
[StructLayout(LayoutKind.Explicit)]<br />
private struct Buffer<br />
{<br />
[FieldOffset(8)]<br />
public byte Buff0;<br />
[FieldOffset(0)]<br />
public int Length;<br />
FieldOffset(4)]<br />
public int Start;<br />
<br />
private static unsafe void CopyToBuffer(Buffer* buffer, byte* data, int len){<br />
if ((( buffer.Length + buffer.Start) + len) >= 262144)<br />
{<br />
throw new NullReferenceException(string.Format("Buffer overflow, or something"));<br />
}<br />
memcpy(((&buffer.Buff0 + buffer.Start) + buffer.Length), data, len);<br />
buffer.Length += len;<br />
}<br />
}<br />
The errors I get are
"Operator '.' cannot be applied to operand of type Buffer*".
I thought that I declared buffer.Lenght as int, so why isn't it working?
I call CopyToBuffer like:
<br />
buffx = p.Finalize();
unsafe {<br />
fixed (byte* buff= buffer1)<br />
{<br />
CopyToBuffer(m_Buffy, buff, buffx.Length);<br />
}<br />
}<br />
return;<br />
m_Buffy is declared as
<br />
private unsafe static Buffer* m_Buffy;<br />
and gets its value on runtime (the address of the recieve buffer).
It's a pretty simple thing, really. I just want to send a text message to a process through its recieve buffer.
I'm a little new to all of this, so I haven't yet fully gotten then hang of API hooking, dll injection and packet filtering and all that which migth have aided me here, but I do my best.
Any response is deeply appreciated.
|
|
|
|
|
Before using memcpy (or whatever variation you may be using), I'd strongly suggest you to take a look at Marshal.Copy method.
Yes, even I am blogging now!
|
|
|
|
|
Dear Friends
I m making Internet Club Management Software, i Want to ask 2 question's Please help me
How I can Stop / Execution of the Software ruuning on Client Machine.???
How I can Block IP/or unblock IP and banning a site on a client????
|
|
|
|
|
Your questions are rather vague. To answer your questions, Yes and Yes. Of course, the next logical question now from you would be 'How?'. If you could provide more information, especially about why exactly you are trying to do (beyond what you said above) we could help you. Do you have a specific programming question (i.e., something your stuck on)?
- Nick Parker My Blog | My Articles
|
|
|
|
|
My requirement is I need to put web service name space/ url in a properties file and invoke the corresponding web service. How can I do that ?
Here is the sample C# code which got generated with a wsdl utility using a wsdl file.
My requirement is I should read that IP addresses, Name, namesapce from a configuration file insteadof hard coding like below. Is that possible? If yes, How?
[System.Diagnostics.DebuggerStepThroughAttribute()]
[System.ComponentModel.DesignerCategoryAttribute("code")]
[System.Web.Services.WebServiceBindingAttribute(Name="MyValidationBinding", Namespace="http://33.83.76.254/")]
public class Validation : System.Web.Services.Protocols.SoapHttpClientProtocol
{
/// <remarks>
public Validation()
{
this.Url = "http://33.83.76.254:5556/soap/rpc";
}
/// <remarks>
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="http://33.83.76.254/MyValidation", ResponseNamespace="http://33.83.76.254/MyValidation")]
[return: System.Xml.Serialization.SoapElementAttribute("responseXml")]
public string myvalidate(string s1, string s2)
{
Thanks,
jcm
JCM
|
|
|
|
|
|
Thanks Nick.
But I need to build that as DLL. If I build the DLL how do I deploy the config file with the DLL. Where should we put the config file?
Also, the link talks about only in the constrcutor of the program like below
public Books() {
this.Url = ConfigurationSettings.AppSettings["WebServicesUrl"]
}
but how do we replace the name, namespace values before the method call like below
[System.Web.Services.Protocols.SoapRpcMethodAttribute("", RequestNamespace="http://33.83.76.254/MyValidation", ResponseNamespace="http://33.83.76.254/MyValidation")]
[return: System.Xml.Serialization.SoapElementAttribute("responseXml")]
public string myvalidate(string s1, string s2)
{
Thanks,
JMC
|
|
|
|
|
The code you are looking at is simply a proxy that was generated from wsdl pointing to your web service. The proxy is what talks to the web service and returns the values to you. You can deply the config file right along with your assembly, within the same directory. The problem is that attributes must be a connstant expression, in other words you can't set thier values by an inline method call or in your case, pointing to the AppSettings to gain dynamic values at runtime. If you read through the comments in that link I sent you, Peter Cook suggest that you set the web reference to dynamic rather than static thus allowing Visual Studio .NET to handle this for you.
- Nick Parker My Blog | My Articles
|
|
|
|
|
Hi, I need to check the status of WMI services (running, stopped, or disabled) on a local computer, using System.Management classes in .NET. If anyone knows please update this.
Thank you.
Thank you
Silver Bullet
|
|
|
|
|
If WMI isn't running, you can't use WMI to check the status of itself. The best way is to use the ServiceController like so:
ServiceController sc = new ServiceController("winmgmt");
if (sc.Status != ServiceControllerStatus.Running)
sc.Start();
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
I have made a report using crystal reports.net. I am using a MDB file as my datasource. When I close the form that displays my report, the report is not disconnecting from the datasource. What do I need to do to disconnect the report from it's datasource.
Thanks.
|
|
|
|
|
Use a DataSet as the data source. Fill your DataSet with what you need from the Jet database (MDB) and pass it to SetDataSource . In the Cyrstal Reports designer, you can bind against a DataSet but it helps to use a typed DataSet , which xsd.exe or the DataSet designer in VS.NET can do easily.
If you have a view, table, or tables that you want to fill the DataSet with, connect the Jet database in the Server Explorer, browse to the view or table(s), and drag and drop them into a new DataSet item you can add to your project. This will create the necessary elements for you.
Then in the Crystal Reports designer, you can add a reference to that typed DataSet and design your report as you would normally.
This makes for a good disconnected architecture since it doesn't matter from where that data is obtained (could be a Jet database, SQL Server, Oracle, an XML file, etc.).
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
hi,
does anybody know how i can scan and/or log in a file, that e.g. for all 5 seconds or when a window opens, it would be logged in a file, which windows are opened?(the title of the window or something else) i need this mechanism for usability tests.
i hope someone can help me.
thanks in advance
yours sincerely
patrick
|
|
|
|
|
i know can also be not a C# specific question but it anybody knows a solution with c# it would be c#-specific. the best case were if anybody know a tool with which i can solve the quoted problem??
thanks in advance.
patrick
|
|
|
|
|
Enumerating the top-level windows is easy: P/Invoke the EnumWindows native API:
[DllImport("user32.dll")]
private static extern bool EnumWindows(EnumWindowsProc proc, IntPtr lParam);
private delegate bool EnumWindowsProc(IntPtr hWnd, IntPtr lParam);
[DllImport("user32.dll", CharSet=CharSet.Auto)]
private static extern IntPtr GetWindowText(IntPtr hWnd,
[Out] string title, IntPtr maxCount);
public void EnumWindows()
{
EnumWindows(new EnumWindowsProc(Callback), IntPtr.Zero);
}
private bool Callback(IntPtr hWnd, IntPtr lParam)
{
string title = new string('\0', 260);
if (GetWindowText(hWnd, title, 260) != IntPtr.Zero)
Log(string.Format("{0:x8}: {1}", hWnd, title);
} If instead of windows you want to enumerate all running processes (and perhaps filter those that do not have application windows), you can use Process.GetProcesses and, optionally, check if Process.MainWindowHandle is IntPtr.Zero (not graphical).
Responding when a window opens is a bit more tricky. You must efficiently implement a Windows hook and handle the WH_CBT (0x05) message. This message is documented in the Platform SDK along with related APIs like SetWindowsHookEx . The callback (CBTProc ) is called whenever a window is about to be activated, created, destroyed, minimized, maximized, moved, or resized (so you'll need to filter these appropriately based on your needs).
You can read more about implementing windows hooks in .NET (using the C# language) by reading Using Hooks from C#[^] here on this site. Any questions specific to this article should be directed to the article's message board at the bottom of the page.
Microsoft MVP, Visual C#
My Articles
|
|
|
|
|
hello,
thank you for your reply, unfortunately i do not really know what you mean with your solution, although i thought i have good experience in c#, ado.net, asp.net, etc.
the situation is as follows: i want to log the events on a PDA (DELL AXIM X30 Windows Mobile 2003, Second Edition, .NET Compact Framework), like when a user makes an entry in the time planner,..etc. So it should be recorded if a window opens, respectively what window opens, etc.
is this possible with your idea? - and can you probably explain me your solution in a simpler way? i also read the article "Using hooks from c#" but i do also not look through it.
i hope you can help me once more, because i would need this for a Thesis (diploma).
thanks in advance.
yours sincerely
patrick
|
|
|
|
|