问题
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
回答1:
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:
- Under which circumstances does the System process (PID 4) retain an open file handle?
- Windows 2008 R2 - Kernel (System Process PID=4) is locking files and folders
回答2:
As mentioned above, the fix to this problem is to enable Windows Application Experience Service. Here's how to do this:
- Windows key + R
- Type "services.msc" in the window that pops up
- In the list, find "Application Experience."
- 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
回答3:
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....)
回答4:
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.
来源:https://stackoverflow.com/questions/3312646/visual-studio-output-file-permissions