【发布时间】:2012-02-06 18:11:52
【问题描述】:
我的应用程序现在需要创建文件,然后将文件写入位于其安装目录中的临时目录。默认情况下,msi 将其放在 Program Files\ 中。我没有考虑过如果某个可怜的灵魂使用非管理帐户运行它会发生什么。
Description: Access to the path 'Temp' is denied.
StackTrace: at System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath)
at System.IO.Directory.InternalCreateDirectory(String fullPath, String path, Object dirSecurityObj)
at System.IO.Directory.CreateDirectory(String path)
我查看了我的计算机,默认情况下,用户组中的任何帐户都没有几乎每个文件夹的写入权限。我想我对这一切一无所知,因为我总是以管理员身份运行我所有的东西,甚至没有考虑过。
无论如何,有没有办法:
1:对目录创建/文件写入进行编码,以便在程序未以管理员身份运行时临时将程序的权限提升为管理员(我使用的是 C#)
2:配置安装程序以将“用户”组中的每个人的目录权限设置为“完全控制”(使用 Windows 安装项目 msis)
谢谢!
【问题讨论】:
-
考虑将所有用户的标题更新为“让程序写入
Program Files\myProgram\Temp”或“什么是好的 TEMP 文件夹位置”,具体取决于您的实际需要。
标签: c# windows-installer