权限被拒绝本地管理员帐户下的服务


5

我有一个应该通过网络复制一些文件的服务,该服务在一个本地管理员帐户下运行。

以该管理员身份登录,我可以手动将文件从网络复制到特定文件夹下 Program Files,但该服务存在写入文件的PermissionDenied异常。我也确信文件在写入之前没有被锁定。

错误如下:

访问路径“... / SomeAssembly.dll”被拒绝。

为什么服务给我这样的错误,我该如何纠正? (我也开发了这项服务,因此可以在桌面上对程序集进行更改)。


更新

我也尝试过运行它 System 但它无法读取网络上的文件(dunno为什么) LocalServiceNetworkService 帐户AFAIK没有足够的权限来更改ProgramFiles ...是吗?


更新2

我不能用的原因 System 是因为该帐户无法通过设计访问网络资源,因此也是如此 NETWORK SERVICE 无权访问本地资源。管理员帐户的问题似乎是Windows在服务执行时阻止了文件复制操作。

有任何想法吗????

Answers:


1

首先,我要检查是否有任何文件被标记为“只读”,因为我看到这个属性有时会取代NTFS权限。我已经看过你可以复制gui文件的情况,点击是“你确定吗?”提示,但任何使用程序向其写入数据的尝试都会立即失败,没有给出提示。

此外,我还要确保服务和相关服务实际上在您认为的帐户下运行。我已经看到一些情况,服务A会调用服务B执行某项任务,然后将结果交回服务A以完成任务。如果只有Service An使用具有适当权限的帐户,那么尝试将失败(因为即使An正在调用B,它也不会强制它作为同一用户An运行,如果B本身不配置为使用正确的用户,它将使用可能无法访问您想要的特定地点的默认用户

如果可能的话,确保它使用的路径是什么样的路径 c:\program files\SomeAssembly.dll\somefile.txt 或类似的东西 C:/users/don/app/SomeAssembly.dll 也可能会出错。


0

最后我做的是让应用程序将文件从远程资源复制到低限制文件夹( Application Data 如果我没记错的话)然后调用服务,运行下 System,将它们复制到 Program Files

这种方法的优点是它不需要管理权限就可以通过网络将文件复制到本地驱动器(只要你有权利) read 当然,对网络文件的权限)然后它也利用了对其施加的低限制 System 写入Program Files。


-1

根据其他计算机的运行情况,服务通常在网络服务帐户或本地系统帐户下运行。

我先尝试一下。


我认为你正在准备杀死这项服务或其他什么?
avirk

您始终可以配置运行服务的帐户。我的这两个都没有运行,而是在我创建的管理员帐户下,我确信它有足够的权限来执行任务。
PedroC88
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.