我的winforms .net 2程序在Windows 7中运行正常,UAC打开.程序读/写c:/program files文件夹.
将程序更新为目标.net 4后,同一程序受UAC影响,无法读取/写入c:/program files.我得到UnauthorizedAccessException.
我知道读/写是一种不好的做法,c:/program files但我想知道导致这种行为的原因是什么?
不,这是不可能的,Winforms或.NET Framework一般没有任何变化,这使得写入c:\ program文件突然被禁止.或者就此而言.
我能想到的唯一可能的解释是您之前使用的是Visual Studio 2005.没有Vista Service Pack的原始RTM版本.这是在 Vista 之前发布的,所以还没有将清单添加到EXE中,这需要让Windows知道您的程序与UAC兼容.您可以使用Project + Add New Item,General,Application Manifest File查看该清单的样子.必要条目是:
<requestedExecutionLevel level="asInvoker" uiAccess="false" />
Run Code Online (Sandbox Code Playgroud)
为了能够写入c:\ program files,您必须将level属性更改为"requireAdministrator".
如果没有该清单条目,Windows会将您的程序视为尚未了解UAC的遗留程序.所以看起来你可以写入c:\ program files.但事实并非如此,Windows将文件访问重定向到隔离存储.
更改清单将起作用,但如果您的用户经常运行您的程序,可能不会很好地收到清单.使代码与UAC兼容是更好的解决方案,而是将文件写入AppData.
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |