如果用户不是管理员,我的程序可以使用的临时目录在哪里?

时间:2012-02-06 18:11:53

标签: c# windows-installer

我的应用程序现在需要创建文件,然后将文件写入驻留在其已安装目录中的临时目录。 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)

谢谢!

1 个答案:

答案 0 :(得分:6)

不要那样做

您应该写入AppData文件夹中的每用户目录。 (或Path.GetTempPath(),其中)

其他任何东西都会造成安全漏洞。