注册 登录
编程论坛 C++教室

求助:服务程序无法访问文件夹

wcs123a 发布于 2014-03-17 08:45, 388 次点击
  本地管理员账号,C++写一程序A可以访问某一软件形成的文件夹B,但把A转成服务程序C注册服务就无法访问B,认为B不存在。经过测试,只要注册服务程序访问B或服务程序调用原来能访问B的一般程序,都不成功。
    本人编程水平差,不常写软件,希望遇到此类的程序员或能解决此问题的C/C++牛人联系我(QQ:1755106002),注册成服务能够访问的500请吃饭酬劳。资深编程者一定是小问题,略懂程序的请勿打扰,急用谢谢。
4 回复
#2
yuccn2014-03-17 09:37
转成服务,估计它的当前用户就应该是系统了,那么估计访问的目录就是系统用户目录而不是你的那个本地用户目录,所以就出现了目录不存在这个情况了。。

程序运行时候对应这有个用户的,一般的程序(比如通过鼠标点击起来运行的),都是你登录计算机时候的那个用户,而服务程序估计就是system了
如果某程序设置的那个文件夹,在当前用户目录比如 C:\Users\你的用户名\aa),而服务的就可能去读C:\Users\系统用户名\aa了。。

你先确认下那个目录是否是在用户目录下
#3
yuccn2014-03-17 09:41
同时还要注意一点,程序还有个工作目录
比如程序打开一个文件名,如果不指定全路径,那么它就从当前工作目录下去读取了,比如你打开  a.txt,那么,当前工作目录去读取了。

比如一个普通的exe程序,直接双机它运行时候,那么它的当前目录一般就是你双机它时候的目录了。加入你用管理员身份运行,那么,它的当前目录就是系统目录了。
假如这个程序读取一个文件,没有写全路径,那么他们读取的位置就不同 了
#4
玩出来的代码2014-03-18 17:09
2楼说的有道理。
服务是以system权限运行的, 程序是以用户权限运行,当服务调起你的程序B时 B继承了服务的权限还是以system权限运行。
解决办法:确定目录是否存在问题, 可以以当前用户的权限将B调起
#5
天使梦魔2014-03-18 17:11
目录错,服务权限大于用户权限,不然会出现无法启动该服务
1