无法通过windows服务访问UNC路径,即使使用相同的用户进行服务



我有一个windows虚拟机,并创建了一个Admin用户,我们说- AdminUser。我已经将该用户的azure文件共享挂载到Z:驱动器。可以通过unc路径或驱动器路径访问共享。我还有一个c#实用程序来检查path是否存在,当我运行它时它返回true。这一切都很好。现在,当我使用该实用程序和相同的用户凭据创建windows服务时,它会抛出一个错误,认为路径不存在。注意事项-

  • 服务用户或我用来登录的用户是本地管理员用户,在创建服务时,我提供了"/AdminUser"到CreateService。还提供了配置密码。
  • 虚拟机也已加入域。我有来自default-domain*connected-domain*的用户。连接到azure活动目录的已连接域。

我是否需要设置其他类型的用户作为登录服务?

我可以在这里看到它说本地用户无法访问网络资源,但我想知道,因为我用适当的凭据挂载了路径,这重要吗?

更新:

runas /user:USER­NAME “C:fullpathofProgram.exe”

我们必须使用cmdkey来存储SMB以后可以使用的凭据。使用上下文菜单或命令(例如

)与您想要用于服务的用户一起启动cmd.exe。
runas /user:default-domaindomainServiceUser cmd

然后在新的命令shell中使用cmdkey

cmdkey /add:<storagteAccountName>.file.core.windows.net<shareName> /user:AZURE<storageAccountName> /pass:<storageAccountKey>

重新运行服务,它应该可以工作。

如果还想将其挂载为持久驱动器,可以使用

命令提示符

net use z: \<storagteAccountName>.file.core.windows.net<shareName> /persistent:yes

Powershell

New-PSDrive -Name Z -PSProvider FileSystem -Root "\<storagteAccountName>.file.core.windows.net<shareName>" -Persist

确保用户与windows服务使用的用户完全相同,包括域,即使用default-domaindomainServiceUser或。/AdminUser来运行cmdkey.

虽然用户帐户是相同的,但当windows服务作为'用户'运行时,它获得的登录会话与交互式用户会话(具有Z驱动器)不同。除非您以编程方式将Azure文件共享作为Windows服务一部分的代码中的网络驱动器加载,否则您将无法访问它。

最新更新