我有一个windows虚拟机,并创建了一个Admin用户,我们说- AdminUser。我已经将该用户的azure文件共享挂载到Z:驱动器。可以通过unc路径或驱动器路径访问共享。我还有一个c#实用程序来检查path是否存在,当我运行它时它返回true。这一切都很好。现在,当我使用该实用程序和相同的用户凭据创建windows服务时,它会抛出一个错误,认为路径不存在。注意事项-
- 服务用户或我用来登录的用户是本地管理员用户,在创建服务时,我提供了"/AdminUser"到
CreateService
。还提供了配置密码。 - 虚拟机也已加入域。我有来自
default-domain*
和connected-domain*
的用户。连接到azure活动目录的已连接域。
我是否需要设置其他类型的用户作为登录服务?
我可以在这里看到它说本地用户无法访问网络资源,但我想知道,因为我用适当的凭据挂载了路径,这重要吗?
更新:
runas /user:USERNAME “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服务一部分的代码中的网络驱动器加载,否则您将无法访问它。