22
votes

I'am using Visual Studio 2010, how to set or automatically change owner of the output file from Visual Studio (such as executable file) to user other than administrator?

all output files currently is owned by Administrator (due to Visual studio is launch by administrative privilege), so sometime I can't delete those files due to access permissions.

sometime visual studio itself can't delete it too (after i ran the executable) until few minutes, its really annoying when I need to rebuild those executable. anyone know what's the actual problem here?

error message is : error LNK1168: cannot open [path to file].exe for writing

4
Just run into this problem. Same thing, the handle is owned by System process with PID 4. Could you please open up the question again, generally it's better to leave em open even if there is no current answer and this clearly isn't something happening with just your system. - Maiku Mori
Seems that this fixed my problem.. Thank you.. I have lost much time because of stupid locking issues... - GorillaApe

4 Answers

33
votes

Wooho I finally figured this one out.

It's a bug in Windows 7 and likely in Windows Server 2008 (possibly 64bit versions only). It surfaces when you disable Application Experience service.

Re-enabling this service has fixed this problem for me.

You can't imagine how happy I am, this was making programming so frustrating as it's not just messing with VC, but any compiler and to top it off it's quite random.

A bit more info here as to why it's causing a problem.

List of other SO questions which seem to be related:

8
votes

As mentioned above, the fix to this problem is to enable Windows Application Experience Service. Here's how to do this:

  1. Windows key + R
  2. Type "services.msc" in the window that pops up
  3. In the list, find "Application Experience."
  4. Double-click on this and change from "disabled" to "enabled"

It should work now! Worked for me :)

Source: http://www.techknowl.com/disable-unwanted-services-and-speed-up.html

0
votes

Well, the file as it is created will be owned by the creator, if you are running Visual Studio as an administrator you are just stuck with it that way from an owner perspective.

Personally, unless you are using IIS for Web Applications I find myself running Visual Studio as a regular user more and more frequently, at least with VS 2010.

In regards to the issue where Visual Studio can not delete the file, I have seen this before with build errors, and sometimes if you have multiple projects that are referencing the same assembly. Your best bet there is try and track down the lock, and then you can either kill the lock, or restart Visual Studio.

I typically use Process Explorer (From SysInternals) to simply remove the handle on the file. (NOTE: this is NOT a "great" idea, but it works....)

0
votes

no one give the right answer, so I close this question as a bug within operating system, not in Visual Studio, maybe the O/S is compromised since the file handle is owned by 'System' process (PID 4) and I can't release the file handle since it reporting the file handle is invalid using process explorer.