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木用过 可以考虑程序提权 这样就不用切换用户鸟
2008木用过 可以考虑程序提权 这样就不用切换用户鸟
#2
我写错了,重新编辑一下,其实用户就是Administrator
#3
编辑不了了,其实就是Administrator用户。
也就是说service方式下,切换到Administrator后,在C:\Users\Administrator\AppData\Local\Temp下不能创建文件,但是却可以在C:\Users\Administrator\AppData\Local下创建文件。
以Administrator方式登录系统后运行程序,可以在C:\Users\Administrator\AppData\Local\Temp下不创建文件。
why?
也就是说service方式下,切换到Administrator后,在C:\Users\Administrator\AppData\Local\Temp下不能创建文件,但是却可以在C:\Users\Administrator\AppData\Local下创建文件。
以Administrator方式登录系统后运行程序,可以在C:\Users\Administrator\AppData\Local\Temp下不创建文件。
why?
#4
有可能是权限问题
win7系统曾遇到过类似问题
win7系统曾遇到过类似问题
#5
我的程序需要进行用户的切换来做一些事情。
我的理解上,即便是任何一个用户,比如myUser,不一定必须是admin,它应该是可以访问到属于自己的C:\Users\myUser\AppData\Local\Temp的,是这样的吗?
我的理解上,即便是任何一个用户,比如myUser,不一定必须是admin,它应该是可以访问到属于自己的C:\Users\myUser\AppData\Local\Temp的,是这样的吗?
#6
是啊,为什么呢?
如何解决?
如何解决?
#7
win7权限问题:
要写的话win7有提供一个低权限的地方就是: C:\Users\Administrator\AppData\LocalLow
注意AppData是隐藏状态的
要写的话win7有提供一个低权限的地方就是: C:\Users\Administrator\AppData\LocalLow
注意AppData是隐藏状态的
#8
用管理员模式开启CMD重新注册服务试试
#1
myUser是admin权限?
2008木用过 可以考虑程序提权 这样就不用切换用户鸟
2008木用过 可以考虑程序提权 这样就不用切换用户鸟
#2
我写错了,重新编辑一下,其实用户就是Administrator
#3
编辑不了了,其实就是Administrator用户。
也就是说service方式下,切换到Administrator后,在C:\Users\Administrator\AppData\Local\Temp下不能创建文件,但是却可以在C:\Users\Administrator\AppData\Local下创建文件。
以Administrator方式登录系统后运行程序,可以在C:\Users\Administrator\AppData\Local\Temp下不创建文件。
why?
也就是说service方式下,切换到Administrator后,在C:\Users\Administrator\AppData\Local\Temp下不能创建文件,但是却可以在C:\Users\Administrator\AppData\Local下创建文件。
以Administrator方式登录系统后运行程序,可以在C:\Users\Administrator\AppData\Local\Temp下不创建文件。
why?
#4
有可能是权限问题
win7系统曾遇到过类似问题
win7系统曾遇到过类似问题
#5
我的程序需要进行用户的切换来做一些事情。
我的理解上,即便是任何一个用户,比如myUser,不一定必须是admin,它应该是可以访问到属于自己的C:\Users\myUser\AppData\Local\Temp的,是这样的吗?
我的理解上,即便是任何一个用户,比如myUser,不一定必须是admin,它应该是可以访问到属于自己的C:\Users\myUser\AppData\Local\Temp的,是这样的吗?
#6
是啊,为什么呢?
如何解决?
如何解决?
#7
win7权限问题:
要写的话win7有提供一个低权限的地方就是: C:\Users\Administrator\AppData\LocalLow
注意AppData是隐藏状态的
要写的话win7有提供一个低权限的地方就是: C:\Users\Administrator\AppData\LocalLow
注意AppData是隐藏状态的
#8
用管理员模式开启CMD重新注册服务试试