我有一个需要创建文本日志的程序。在XP中,一切工作都很好,但是当我在Windows 7上测试它 - 后来升级到我的开发计算机的Windows 7时 - 我收到一个错误“访问路径'C:\ Program Files(x86)\ Ludlum测量,公司\ LMI通用软件\ UniversalLog \'被拒绝“。如果我让安装程序创建文件夹,然后尝试在文件夹中创建一个文本文件,我会收到类似的错误。
我知道这与权限有关,但我该如何授予权限以及如何处理?
使用日志记录功能的程序?
日志进入的文件夹?
程序所在的文件夹?
此修复程序如何在XP,Vista,Server 2005和Server 2008以及服务下工作(程序的一部分作为Windows窗体运行,部分作为服务运行)吗
CNC中 重点补充。
重申:在XP上安装和运行时,这将如何工作?一个Server 2003?服务器2008?这会给他们带来什么问题吗?
还有一个新问题:我的程序可以从ApplicationData文件中访问文件吗?我记得整个问题源于我试图创建一个包含SQL数据库连接信息的配置文件。将你的头撞在砖墙上一天往往会让你忘记你为什么开始这样做。而且,这最初适用于XP,Server 2005和Server 2008。
答案 0 :(得分:4)
您应该使用 Environment.GetFolderPat h 并选择 Environment.SpecialFolder 文件夹,该文件夹在UAC启用时具有写入权限并在那里写入您的日志文件。< / p>
默认情况下,您在UAC下无权写入 C:\ Program Files 或其子文件夹。
Environment.ApplicationData 通常是一个不错的选择,默认情况下它可以在XP,Vista,Server 2005和Server 2008上写入,除非管理员已经过多地锁定了东西
Teach Your Apps To Play Nicely With Windows Vista User Account Control
是如何编写在UAC下运行良好的应用程序的一个很好的资源
答案 1 :(得分:4)
除非您实际修补应用程序,否则在安装后不应向Program Files目录写入任何内容。文件的日常使用应该进入应用程序数据文件夹(LocalApplicationData用于非漫游数据,ApplicationData用于漫游数据)。
string path = Environment.GetFolderPath(
EnvironmentFolders.SpecialFolders.LocalApplicationData)
http://msdn.microsoft.com/en-us/library/system.environment.specialfolder.aspx