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

时间:2022-03-02 03:51:59
系统:
win2008 64bit

创建临时文件使用的windows API: 
GetTempFileName(.....)

现象:
我的程序需要在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目录下成功创建文件呢???

请高手指导一下!

谢谢!

8 个解决方案

#1


myUser是admin权限?
2008木用过 可以考虑程序提权 这样就不用切换用户鸟

#2


我写错了,重新编辑一下,其实用户就是Administrator

引用 1 楼 c_losed 的回复:
myUser是admin权限?
2008木用过 可以考虑程序提权 这样就不用切换用户鸟

#3


编辑不了了,其实就是Administrator用户。
也就是说service方式下,切换到Administrator后,在C:\Users\Administrator\AppData\Local\Temp下不能创建文件,但是却可以在C:\Users\Administrator\AppData\Local下创建文件。

以Administrator方式登录系统后运行程序,可以在C:\Users\Administrator\AppData\Local\Temp下不创建文件。

why?

#4


有可能是权限问题
win7系统曾遇到过类似问题

#5


我的程序需要进行用户的切换来做一些事情。
我的理解上,即便是任何一个用户,比如myUser,不一定必须是admin,它应该是可以访问到属于自己的C:\Users\myUser\AppData\Local\Temp的,是这样的吗?

引用 1 楼 c_losed 的回复:
myUser是admin权限?
2008木用过 可以考虑程序提权 这样就不用切换用户鸟

#6


是啊,为什么呢?
如何解决?

引用 4 楼 c_losed 的回复:
有可能是权限问题
win7系统曾遇到过类似问题

#7


win7权限问题:
要写的话win7有提供一个低权限的地方就是: C:\Users\Administrator\AppData\LocalLow
注意AppData是隐藏状态的

#8


用管理员模式开启CMD重新注册服务试试

#1


myUser是admin权限?
2008木用过 可以考虑程序提权 这样就不用切换用户鸟

#2


我写错了,重新编辑一下,其实用户就是Administrator

引用 1 楼 c_losed 的回复:
myUser是admin权限?
2008木用过 可以考虑程序提权 这样就不用切换用户鸟

#3


编辑不了了,其实就是Administrator用户。
也就是说service方式下,切换到Administrator后,在C:\Users\Administrator\AppData\Local\Temp下不能创建文件,但是却可以在C:\Users\Administrator\AppData\Local下创建文件。

以Administrator方式登录系统后运行程序,可以在C:\Users\Administrator\AppData\Local\Temp下不创建文件。

why?

#4


有可能是权限问题
win7系统曾遇到过类似问题

#5


我的程序需要进行用户的切换来做一些事情。
我的理解上,即便是任何一个用户,比如myUser,不一定必须是admin,它应该是可以访问到属于自己的C:\Users\myUser\AppData\Local\Temp的,是这样的吗?

引用 1 楼 c_losed 的回复:
myUser是admin权限?
2008木用过 可以考虑程序提权 这样就不用切换用户鸟

#6


是啊,为什么呢?
如何解决?

引用 4 楼 c_losed 的回复:
有可能是权限问题
win7系统曾遇到过类似问题

#7


win7权限问题:
要写的话win7有提供一个低权限的地方就是: C:\Users\Administrator\AppData\LocalLow
注意AppData是隐藏状态的

#8


用管理员模式开启CMD重新注册服务试试