C:\Users\myUSer\AppData\Local\Temp写权限的问题

yanghartai 2011-06-03 11:37:30
系统:
win2008 64bit

现象:
我的程序需要在C:\Users\myUser\AppData\Local\Temp目录下面创建一个临时文件,当我用myUser登录到系统后运行程序,临时文件能够被创建出来。
如果我的程序以一个service的方式启动,那么登录的用户是SYSTEM,程序将用户切换到myUser后,再去C:\Users\myUser\AppData\Local\Temp目录下面创建临时文件的时候就会失败!可是,这个时候却可以在去C:\Users\myUser\AppData\Local目录下面成功创建临时文件。

为了验证,我在C:\Users\myUser\AppData\Local目录下用Adminnistrator创建了一个目录myDir,我发现:
1)用myUser登录到系统后运行程序, 可以在C:\Users\myUser\AppData\Local\myDir下面创建临时文件。
2)以service的方式启动,程序将用户切换到myUser后,在C:\Users\myUser\AppData\Local\myDir下面创建临时文件失败!同样的,在C:\Users\myUser\AppData\Local目录下面是可以成功创建临时文件的。

请问这是什么原因呢?是权限的问题吗?Administrator是完全读写权限的啊。
最奇怪的是,为什么在C:\Users\myUser\AppData\Local\Temp目录下没有办法创建文件,却可以在C:\Users\myUser\AppData\Local目录下成功创建文件呢???

请高手指导一下!

谢谢!
...全文
791 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
夏脑 2011-06-04
  • 打赏
  • 举报
回复
比较一下两个目录的权限
yanghartai 2011-06-04
  • 打赏
  • 举报
回复
我尝试过用Win API GetTempPath(),我发现无论是SYSTEM用户,还是我切换到的另外一个用户(比如,MyUser),GetTempPath()返回的%temp%都是系统的Temp,也就是说C:\windows\temp,那么如果我切换到的用户MyUser对C:\windows\temp没有操作权限的话,就没有办法写文件了。
所以,我才想到当用户切换到Myuser的时候,我就去C:\Users\MyUsers\AppData\Local\Temp下面去写文件,可是同样,这个目录也是写不进去的。
但是,Myuser是可以在C:\Users\MyUsers\AppData\Local目录下创建临时文件的。
这是什么原因呢?

[Quote=引用 2 楼 drifter250771 的回复:]
就是权限的原因。为了安全性,用户TEMP这种敏感目录是仅供所属用户访问的
Services需要使用临时目录就该去系统TEMP,在C:\WINDOWS\TEMP

所以你的程序应该使用%temp%而不是一个绝对路径
[/Quote]
yanghartai 2011-06-04
  • 打赏
  • 举报
回复
谢谢你的回复!
有个疑问,我已经把用户切换到了Administrator,为什么还访问不了C:\users\Administrator\....\local\temp呢?
还有一个问题就是,如果我使用系统TEMP,C:\WINDOWS\TEMP,而程序切换到的用户对C:\Windows\Temp没有权限的话,反而访问不了。

[Quote=引用 2 楼 drifter250771 的回复:]
就是权限的原因。为了安全性,用户TEMP这种敏感目录是仅供所属用户访问的
Services需要使用临时目录就该去系统TEMP,在C:\WINDOWS\TEMP

所以你的程序应该使用%temp%而不是一个绝对路径
[/Quote]
drifter250771 2011-06-04
  • 打赏
  • 举报
回复
就是权限的原因。为了安全性,用户TEMP这种敏感目录是仅供所属用户访问的
Services需要使用临时目录就该去系统TEMP,在C:\WINDOWS\TEMP

所以你的程序应该使用%temp%而不是一个绝对路径

6,868

社区成员

发帖
与我相关
我的任务
社区描述
Windows 2016/2012/2008/2003/2000/NT
社区管理员
  • Windows Server社区
  • qishine
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧