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

本文关键字:在哪里 可以使 用户 管理员 程序 如果 | 更新日期: 2023-09-27 18:22:37

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

谢谢!

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

不要那样做

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

其他任何事情都会造成安全漏洞。