Permission denied - cannot open outputfile - c

Now and then I get this compilation error when compiling a c-file in Eclipse.
c:/mingw/bin/../lib/gcc/mingw32/4.7.2/../../../../mingw32/bin/ld.exe: cannot open output file main.exe: Permission denied
It happends when I have made a change in the source-code - but not always.
I know how to solve this* but I would like to know WHY it occurs and how to avoid it?
*In eclipse I go to the debugger and terminate the main thread of the program

You said it yourself, it happens because the program being compiled is still running.
In Windows, you can't make changes to the exe file of a program when it's running.
It's fantastically annoying, and one of those things that (to me) make Windows slightly less comfortable than e.g. Linux for development.

Related

Can i compile a C program using GCC which automatically asks for admin rights?

I'd like to compile a program which simply kills a task after a previously executed program has quit. This doesn't work without admin privileges.
I'm aware that you can choose "Run program as administrator" from the compatibility tab in the properties of the executable, but if possible I'd like to avoid the necessarity of doing so when distributing the program.
I'm using GCC 4.8.1 on Windows 8.1 to compile.
Edit: About 5 years later I'd propably have gone with system("tskill <processname>") in this situation, since it doesn't require admin rights on user processes. Alternatively some hack using runas/vbscript.
It looks like this may have already been figured out - you might want to look here and see if any of this helps: Embed manifest file to require administrator execution level with mingw32
From what I can tell by reading that question, it seems that requiring administrator rights to open an application is not something you have to do in code, but instead involves the resources in the compiled executable. That is not something I am too familiar with, but it looks like the link I gave can get you started down the right path.

Unable to run C programs using any compiler

I had to write code in C and run it for an assignment. Since this is the first time that I'm using C, I downloaded MinGW as a compiler and Code Blocks as an IDE. I had no problem compiling the code given by my professor but it never runs (this is a simulation for an M/M/1 queue). When I say it never runs, I mean that a command prompt like window pops up and nothing happens after that. Every time I close that window and try to compile the SAME program again, I get an error that says that permission to access the file has been denied.
I then deleted Code Blocks and tried running the program through command prompt but I have the same problem. I've now tried doing it using LCC-Win but nothing has changed. Another weird thing that happens when I run any program is that three instances of the .exe file of that particular program are in my processes under task manager. I then need to restart my computer to try compiling that same program.
I even tried running a simple Hello World program and I have the same problem!
I am currently using a Windows 7 32-bit system.
Any help would be greatly appreciated!

Code Blocks compilation error

Whenever I am trying to build and run a program the second time this error is coming on the screen:
cannot open output file C:\Users\Username\Documents\filename.exe Permission denied
You either 1. don't have permissions to write to the directory(unlikely)
or 2. Your executable is still in the memory. Hit CTRL+ALT+DEL select Windows Task Manager and Find+End your executable "filename.exe".
It means The directory your code is in doesn't have write permission. But try moving your code in some write permitted directory. BTW in my windows this problem occurs sometimes. Then when I restart codeblocks it disappears - I am not telling this is a solution.

Compiled C files getting no access error

I'm running the MinGW compiler (gcc port for windows). After messing around with the paths I got it running and compiled a program. Now the executable won't open. If i run it from the command line i get access denied. If i run it from windows explorer i get the same thing but in a popup. Avg is also giving me trojan reports about my own program.
I have no idea of what might be happening with your anti-virus, but I have heard from fellow programmers that antivirus can be very annoying giving false-positives these days. Anyway, check that the program that you generated is indeed giving some sort of "Access denied" error instead of "Access violation". The most likely cause is that your program can not access certain dll's that it needs to run, like libgcc_sj.dll (not really sure about the name), or even some msvcrt??.dll . The easiest way to check for the list of dll's that your program depends upon is with an utility distributed in the Window's SDK called "depends.exe".
Good luck!

ld.exe: cannot open output file ... : Permission denied

I recently installed CodeBlocks with mingw32 on Windows 7 Ultimate 32bit in order to dust off my c skills, but this problem has me somewhat stumped.
I decided to fire off a short Fibonacci generator to make sure my setup was working, but I ran into a hurdle.
The program compiles, links and whatnot like a charm and I get a corresponding executable which runs as expected.
The problems occur if I try to compile again, then I get the following:
c:/codeblocks/mingw/bin/../lib/gcc/mingw32/4.4.1/../../../../mingw32/bin/ld.exe: cannot open output file bin\Debug\Fibonacci.exe: Permission denied
I can't even edit the permissions of the generated executable.
I've checked the usual suspects:
Executable is verily not running.
Path to executable is read/writable to mingw32 (otherwise it wouldn't be able to build in the first place)
I'm not running cygwin in any shape or form.
And now for the funny bit: Usually after a few minutes, any executables generated by mingw32 which are displaying this Access Denied behaviour will automatically vanish without any intervention from me.
I've googled this somewhat, but most of the other results were either vague or inapplicable.
I wonder whether there is some Windows 7 security setting playing havoc with my .exe's, but I'm not that knowledgeable about Win 7 as to know where to begin searching.
Any one have any ideas?
I had exactly the same problem right after switching off some (in my opinion unneccessary) Windows services. It turned out that when I switched ON again the "Application Experience" everything resumed working fine.
May be you simply have to turn on this service? To switch ON Application Experience:
Click the Windows start buttonn.
In the box labeled "Search programs and files" type services.msc and click the search button. A new window with title "Services" opens.
Right click on "Application Experience" line and select "Properties" from popup menu.
Change Startup type to "Automatic (delayed start)".
Restart computer.
Application Experiences should prevent the problem in the future.
Your program is still running. You have to kill it by closing the command line window.
If you press control alt delete, task manager, process`s (kill the ones that match your filename).
If you think the executable is locked by a process, try Process Explorer from SysInternals. In the File/handle, enter Fibonacci.exe and you should see who holds the file.
If it is not enough, you can use Process Monitor (from SysInternals, again) to follow the activity of all processes on your system on Fibonacci.exe.
With a little bit of analysis (call stacks), you'll may find out why the access to the file is denied and what make it disappear.
Problem Cause :
The process of the current program is still running without interuption.
(This is the reason why you haven't got this issue after a restart)
The fix is simple :
Go to cmd and type the command taskkill -im process_name.exe -f
Eg:
taskkill -im demo.exe -f
here,
demo - is my program name
The Best solution is go to console in eclipse IDE and click the red button to terminate the program.
You will see the your program is running and output can be seen there. :) !!
I had the same behaviour, and fixed it by running Code::Blocks as administrator.
Open task manager -> Processes -> Click on .exe (Fibonacci.exe) -> End Process
if it doesn't work
Close eclipse IDE (or whatever IDE you use) and repeat step 1.
I had a similar problem. Using a freeware utility called Unlocker (version 1.9.2), I found that my antivirus software (Panda free) had left a hanging lock on the executable file even though it didn't detect any threat. Unlocker was able to unlock it.
Got the same issue. Read this. Disabled the antivirus software (mcaffee). Et voila
Confirmed by the antivirus log:
Blocked by Access Protection rule d:\mingw64\x86_64-w64-mingw32\bin\ld.exe d:\workspace\cpp\bar\foo.exe User-defined Rules:ctx3 Action blocked : Create
It may be your Antivirus Software.
In my case Malwarebytes was holding a handle on my program's executable:
Using Process Explorer to close the handle, or just disabling antivirus for a bit work just fine.
i experienced a similar issue. Bitdefender automatically quarantined each exe-file i created by MinGW g++. Instead of the full exe-file i found a file with a weird extension 'qzquar'
testAutoPtr1.exe.48352.gzquar
When i opened quarantined items in Bitdefender i found my exe-file quarantined there.
I got this error when using the Atom editor and mingw (through a package called gpp-compiler) for C++. Closing the open console window fixed my issue.

Resources