我的应用程序现在需要创建文件,然后将文件写入驻留在其已安装目录中的临时目录。 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)
谢谢!
答案 0 :(得分:6)
不要那样做。
您应该写入AppData文件夹中的每用户目录。 (或Path.GetTempPath()
,其中)
其他任何东西都会造成安全漏洞。