Get DirectoryInfo make error: acces denied C:\Documents and Settings - c#

I run the code from http://msdn.microsoft.com/en-us/library/ms171645%28v=vs.80%29.aspx#Y798
I have the error : "Access to the path 'C:\Documents and Settings' is denied."
I try change app.manifest and use try catch but nothing works.
I run it from administrator account. From Windows 7

It's because you are running under an account that does not allow access to that folder, try changing the path to one that you do have permission to access and trying again or change to an account that does have permission.
Edit: Ok I see you're running Windows 7, which doesn't have a 'C:\Documents and Settings' folder by default, it's changed to 'C:\Users'. If you say you've tried 'C:\' too and it doesn't work, are you sure you're running Visual Studio as an Administrator as by default I don't think it does? (To do this right click on a Visual Studio shortcut and click 'Run as Administrator'

Probably you're not the computer's administrator. Only an Admin has permission across the whole computer.
You also need to use try-catch every time you try to access the DirecrotyInfo for things like this.

Related

Change download folder [duplicate]

I am trying to create new file in visual studio 2012
fileStream = new FileStream("google_com.txt", FileMode.CreateNew);
But i keep getting this error
Access to the path 'C:\Program Files (x86)\IIS Express\google_com.txt' is denied.
Plz help to fix this poblem.
Solutions:
Put a specific location for google_com.txt file. like C:\google_com.txt. Actually it is not allowing to create the file in default location(inside program files) as it might not have the proper privilege.
If you want to create the file in default location(inside program files) run Visual Studio as Administrator.(R-Click-> Run as Administrator).
Run Visual Studio as Administrator
You can't write to the Program Files folders on Windows Vista or later unless you're running elevated/as an administrator.
You should be writing to the application's App_Data folder if you need to write anywhere. Look into using Server.MapPath().
If this is in a web app, the file will be created in the application's root, which in this case is your iis express directory. Run Visual Studio as Administrator, or change the location of the file by specifying an explicit path.
Official Microsoft response:
Issue occurs because of missing permissions on a local resource that
the ASP.NET application tries to access If you are unable to get a
clear description of the problem because of a custom error message,
run FileMon and reproduce the problem. Stop and save the capture as
FileMon.xls and open the file in Microsoft Excel. On the Data menu,
click Filter, and then click AutoFilter to use the filtering
capabilities of Excel. Now select the drop-down list in column F and
look for "ACCESS DENIED" errors.
A sample FileMon output is shown below. 10381 1:01:11 PM w3wp.exe:2320
OPEN C:\winnt\microsoft.net\framework\v1.1.4322\Temporary ASP.NET
Files\sessiontest\8832e585\275ec327\global.asax.xml ACCESS DENIED NT
AUTHORITY\NETWORK SERVICE As you can see from the filtered results,
we have narrowed down the cause of the problem. FileMon shows that the
NT AUTHORITY\NETWORK SERVICE account is missing NTFS permissions on
the C:\Winnt\Microsoft.net\Framework\v1.1.4322\Temporary ASP.NET Files
folder. This should be straight forward to fix. For more information
about using FileMon to troubleshoot ASP.NET, click the following
article number to view the article in the Microsoft Knowledge Base
https://support.microsoft.com/es-ve/help/910449/troubleshooting-common-permissions-and-security-related-issues-in-asp
Try this:
Server.MapPath("~/ FolderName / google_com.txt ")

Access denied while accessing files in c:\Programdata in Windows 10

I am designing an command line application for Windows 10 that require to replace some files in c:\programdata folder. But when I use File.Copy or File.Move, it throws an exception as:
Access to the path 'C:\ProgramData\***' is denied.
I have added app.manifest with requireAdministrator but it doesn't work. Am I missing something?
Make sure you have permissions on that folder. e.g. Right Click on folder > Properties > go to Security tab, and check if you have permissions. Also try your application by right click and 'Run as Administrator'.
Try to check the user identity the actually runs the process/execute file.
This user should by "System" to have permissions to Move/Copy files on the Disk.
In debug mode you can always check the Task Manager => Processes and see the User Name for your process.

CreateDirectory at server in a shared machine

I have an ASP.NET application running over a shared .NET server. I want to allow the current logged user to create a folder into a specific path when the application needs it. So, I'm just checking the following:
var userFolderPath = Path.Combine(Server.MapPath("~/storedphotos"), username);
if (!Directory.Exists(userFolderPath)) {
Directory.Create(userFolderPath);
}
When I run this code into my local machine it works perfectly. However, when I publish the application to that server and try to do the same, it's returning me:
"Access to the path 'xxxxxx' is denied."
I think it could be a permission issue. Once I cannot change anything at the IIS into the server or any configuration, is there a way to let the user is using my application to create the folder without problems?
try this:
"Access to the path 'xxxxxx' is denied."
As Error says You need to assign Permissions to Folders
Right Click Folder
Go to Security Tab
Click on Edit
Click on Add
Click on Addvance
Find Now
Give Permission to IIS_IUSRS (Full Control)
Click On OK
Click On OK
Click On Full Control in allow
Click On OK
Again Run the Application
Note: If Above things are not working then try to give same permission to
NETWORK,NETWORK SERVICE Users

setting UAC settings of a file in C#

i want to give a file(already present on the client computer .exe) permissions to always execute with administrative permissions.
please note that the file i wants to give permissions is already on target machine. and i want to change permissions of that file through another program written in c# and it has administrative permissions to do everything.
kindly let me know how to do it
i am using this code
System.Security.AccessControl.FileSecurity fs = File.GetAccessControl(#"c:\inam.exe");
FileSystemAccessRule fsar = new FileSystemAccessRule("Everyone", FileSystemRights.FullControl, AccessControlType.Allow);
fs.AddAccessRule(fsar);
File.SetAccessControl(#"c:\inam.exe", fs);
this code will change the permissions correctly but still when i execute inam.exe after executing this code the UAC not appeared and also the inam.exe cant perform administrative operations.
actually i have already deployed an application on more than 10,000 clients so wants to release a patch to resolve the administrative rights issue.
Execute with administrative privileges is not a file permission.
This is usually configured by adding a manifest file (either to the Win32 resources in the EXE, or as an external manifest). This manifest file can state whether the application needs to run elevated or not.
I'm not entirely sure where Windows stashes the "Run this program as an administrator" compatibility setting.
Using a manifest file is the best approach, but an alternative one would be to programmatically set the "Run this program as an administrator" flag (the option you find in the Compatibility tab of an EXE's properties), by setting a simple registry key. You need to create a string value (REG_SZ) under the one of these keys (if you want the setting to be per user or per machine, respectively):
HKEY_CURRENT_USER\Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
or
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers
The name of the value needs to be the full path to your executable (if the path contains spaces, do not surround the path with quotes), and the data of the value must contain the string RUNASADMIN.
Build a manifest file (see http://www.gregcons.com/KateBlog/AddingAManifestToAVistaApplication.aspx among other places) and name it Whatever.exe.manifest and put it in the same folder as the exe. The nanifest should set the requestedExecutionLevel to requireAdministrator. All set.
If you own the other exe, you can embed the manifest when you build it. This is almost trivial in Visual Studio 2008 and up. See the Application tab and drop down the Manifests drop down. There are instructions nearby. Also when you use VS 2008 to add a manifest to your project you don't have to type all the XML, you just copy the appropriate requested execution level from the comments that are generated for you.

Event Log SecurityException for Web Application?

I have an app that writes messages to the event log. The source I'm passing in to EventLog.WriteEntry does not exist, so the Framework tries to create the source by adding it to the registry. It works fine if the user is an Admin by I get the following whe the user is not an admin:
"System.Security.SecurityException : Requested registry access is not allowed." message.
How can I fix that?
Update
I have create the registry with the Admin account manually in the registry. Now, I have the error : System.Security.SecurityException: Requested registry access is not allowed.
I do not understand because I have create a user in the Group Administrator... what do I have to do more?
For your update I have found something that might help you :
Run regedt32
Navigate to the following key:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Eventlog\Security
Right click on this entry and select Permissions
Add the ASPNET user
Give it Read permission
2. Change settings in machine.config file
Run Explorer
Navigate to WINDOWS or WINNT folder
Open Microsoft.NET folder
Open Framework folder
Open v1.1.4322 folder (folder name may be different, depending on what dotnet version is installed)
Open CONFIG folder
Open machine.config file using notepad (make a backup of this file first)
Locate processmodel tag (approx. at line 441)
Locate userName="machine" (approx. at line 452)
Change it to userName="SYSTEM"
Save and close the file
Close Explorer
3. Restart IIS
Run IISReset
The source is here
The "non-programming way" is to grant the user that user your web application/web service with access to registry (Event Log are written in the event log).
Nothing of these worked out for me. What did the trick was alter the Application Pool Identity from "ApplicationPoolIdentity" to "LocalSystem". Then put LocalSystem Windows account into the Administrators group.

Categories

Resources