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

Isa*_*ger 0 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) 
Run Code Online (Sandbox Code Playgroud)

我查看了我的计算机,默认情况下,用户组中的任何帐户都没有几乎所有文件夹的写入权限.我想我一无所知,因为我总是以管理员的身份运行我所有的东西,甚至没有想到它.

无论如何,有没有办法:

1:对目录创建/文件编写进行编码,以便在程序未以管理员身份运行时暂时将程序权限提升为管理员(我正在使用C#)

2:配置安装程序,为"用户"组中的每个人设置目录权限为"完全控制"(使用Windows安装项目msis)

谢谢!

SLa*_*aks 6

不要那样做.

您应该写入AppData文件夹中的每用户目录.(或者Path.GetTempPath(),在那里)

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