【问题标题】:Where is a temp directory that my program can use if the user is not an administrator?如果用户不是管理员,我的程序可以使用的临时目录在哪里?
【发布时间】: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


【解决方案1】:

不要那样做

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

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

【讨论】:

  • 哦,对了,那将是我的临时目录的好地方,不是吗。
  • 嘿,这很酷,Path.GetTempPath() 正是我所需要的!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-23
  • 2017-04-09
  • 2012-01-07
  • 1970-01-01
  • 2019-01-06
  • 2016-08-23
  • 1970-01-01
相关资源
最近更新 更多