我遇到以下情况:我正在构建一个需要服务的应用程序。该服务有时为用户创建文件和文件夹(它实际上接收文件,然后将其写入磁盘)。
我的问题如下:
如果“标准用户”(即非管理员)使用该应用程序(包括服务),则该用户甚至无法读取该服务创建的文件,因为他没有权限,因为它似乎(“访问被拒绝”)。但是管理员用户可以看到相同的文件。
如果服务是为管理员用户在桌面上创建一个文件夹(我没有尝试像C :)这样的目的地,那么管理员用户甚至看不到该文件夹,因为这些权限(该文件夹没有出现,但如果我在cmd中使用“dir”命令,它仍然会进入列表;而如果我停止服务,文件夹会自动被删除 - 我不知道为什么)。但是,我试图让服务在桌面上的文件夹中创建一个文件夹(之前已经由我自己创建的文件夹),并且它正常工作。
所以我理解服务的问题与它的安装/运行方式有关。目前,它位于“LocalSystem”上(我尝试使用带有“LocalService”的sc.exe命令使用cmd安装它,但它无法识别“LocalService”)。
那么,有没有办法让我的服务创建文件和文件夹供用户按照自己的意愿读/写?
如果是,请告诉我怎么做。
P.S。到目前为止,我使用.bat文件来调用sc.exe来安装和启动服务。好吗?
答案 0 :(得分:0)
是的,似乎答案是:必须明确设置安全描述符。 其中一个原因似乎是文件实际上是在C:\ Windows \ Temp目录中创建的,然后被移动到预期的目标路径。但是,正在创建的文件夹(直接在所选路径上,例如C:\ Users \ Admin \ Desktop \ MyFolder)是不可见的。所以唯一的解决方案似乎是明确设置安全描述符。