Access Denied to any folder, C# - c#

Getting this strange error.
In C#, I write to a file (txt) whose location I provide at run-time.
The problem is that whatever location I provide, It returns an error: Access to "..path.." is denied.
I checked the permissions, but the required permissions are set.
My code snippet
folderBrowserDialog.ShowDialog();
StreamWriter path = new StreamWriter(folderBrowserDialog.SelectedPath);
.
.
.
Any known issues or something I am missing?
Thanks

You should pass a file name to StreamWriter. It looks as if you're passing a folder name.

Related

C# Winforms cannot create file "the media is write protected"

I have simple code
using (FileStream fs = File.Create(#"newfile.txt"))
{
}
And if I give the path "E:\newfile.txt" I get the error System.IO.IOException: 'The media is write protected.'
If I give the path "C:\newfile.txt" I get no error but no file creation, even if I give the path "C:\Users\Me\Documents\newfile.txt" I get no error and no file creation.
Are these errors related, I have written to USB devices no problem before, and my C drive should not be restricted and surely the Users folder isnt restricted at all.
What am I missing?
Perhaps this might work:
string path = #"C:\Users\Me\Documents\newfile.txt"
File.AppendAllText(path,new[] {"Your text goes here"});
This will create the file if it does not exist or write to the existing one.
See Also:
Create a .txt file if doesn't exist, and if it does append a new line

C# File.exists returns false

I have a program that opens a database, the path to that database is this:
private static string strDefaultDB2 = #"C:\Users\" + Environment.UserName + #"\OneDrive\TIME FILE\MyName\TimeFile.accdb";
All computers I have tried this one were able to access it fine except one, it also has access to OneDrive but when I run the code the file doesn't exist... If I enter the path generated by the code which is something like this:
C:\Users\UserName\OneDrive\TIME FILE\MyName\TimeFile.accdb
In explorer, it opens up the database right away. I'm not sure why it can't find the database on this one machine... I also tried running it as admin but that didn't change anything
This is the code that executes:
if (!System.IO.File.Exists(doesFileExist))
{
Polaris.Polaris.log("The Path " + doesFileExist + " Does Not Exist!");
runWindowDB();
}
If I try to do a rename on the file it throws an exception: "Could not find file [path]"
And If I try to open the database: "[path] is not a valid path"
I don't get it because this path has whitespace on every pc and the only thing that changes is the username. Explorer opens the file so the path is correct.
Any ideas?
Thanks
Do you get an exception? Can you read/write this file?
You have a whitespace in the string I don't think that is good anyway.
From the official documentation link:
If path describes a directory, this method returns false. Trailing
spaces are removed from the path parameter before determining if the
file exists.
The Exists method returns false if any error occurs while trying to
determine if the specified file exists. This can occur in situations
that raise exceptions such as passing a file name with invalid
characters or too many characters, a failing or missing disk, or if
the caller does not have permission to read the file.
Hard code another users username that you know works, try it from this machine, msdn mentions it will return false if there are invalid characters in the string or if the path is determined to be a folder, there might be some odd encoding going on or virus scanner intercepting the io. If that fails try getting the user to log onto another box that works and if the file is then recognized it must the environment on that users original box.

Create XML file in UNC path in C#

I'm trying to create an XML in an UNC path, using C#, but I'm getting the error "Access denied".
What I'm trying to do is:
doc.Save(#"\\someshare\somefolder\anotherfolder");
(the rest of the code is correct, I already tried on a local folder)
I guess I'll need to use some class to authenthicate on the share. But I don't know which. Could you tell me which is?

System.IO.File.Copy throws System.UnauthorizedAccessException

I get an error when I try to copy a file from one location to another ONLY WHEN the file is already present in the destination. This happens inspite of setting the overwrite flag to true.
I am not getting any clue.
This is the code.
System.IO.File.Copy(source, destination, true);// goes fine as the destination file is not present
System.IO.File.Copy(source, destination, true);// Throws the exception
//"Access to the path 'C:\\Program Files (x86)\\testapp\\map\\sometext.txt' is denied."
Please guide.
Thanks
Sunil
This exception is covered in the documentation for File.Copy:
The caller does not have the required permission.
-or-
destFileName is read-only.
Check the attributes of the file after the first copy. Are the permissions what you expect? Do you need your program to run elevated (as administrator)?
If everything is fine, e.g. the file is not already open and path exists etc... this usually means that the user you run the program with is not allowed to do this action.
(simply file/folder permissions)
What kind of program is this? Is it a web application? If so, you would have to figure out which user is used to run the app pool and give permissions to that user.
Did you check the file is in read only mode or not ?

Programatically grant access permission to user in C:\ to create textfiles

I ran my program in C# that suppose to create and write a file in C:\, but an error occurred saying that access to the path C:\mytextfile.txt is denied. Is there any code that will give the user permission in C:\?
Yes by using the manifest http://www.codeproject.com/Articles/66259/Requesting-Admin-Approval-at-Application-Start or run as different account which has sufficient rights
You need to run the code as an administrator. You don't need C# code for this, you need to change how you're running the code.
However, I suspect that you're trying to do something wrong. I'd guess that you're trying to store some data locally, and are using the root of C: for simplicity, when you should actually be using the standard libraries to locate the users folder or to get a temporary file.
e.g. Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)
(for other folders, use Intellisense to look at the other SpecialFolder children.)

Categories

Resources