我有一个由Windows服务启动的可执行文件,该程序将在客户机器上运行,并且需要连接到远程共享才能执行一个特定的任务。这个份额是由客户通过用户界面指定的,所以我们事先并不知道这一点,这意味着它不能被“硬编码”,或预先分配了共享。由使用本地系统帐户的Windows服务启动的可执行文件无法访问网络共享
此前我们要求客户登录到他们的机器并在登录时运行可执行文件,但我们一直希望允许我们的程序在服务中运行,而不需要登录,主要是为了让它更方便客户,并防止任何意外退出关闭我们的软件。所以这也意味着我们不知道客户机器上存在什么本地用户帐户,所以我们必须使用本地系统帐户启动服务。
如上所述,我们现在有一个包装服务来启动可执行文件并执行各种任务。这似乎在大多数情况下正常工作,并访问底层网络罚款 - 我们的软件的目的主要涉及捕获数据包等。
但是,当软件试图连接到Windows共享(UNC名称)它无法连接。而如果可执行文件手动启动,则连接正常。
我一般认为解决这类问题的建议似乎都使用用户帐户,因为系统帐户无法访问网络共享,但在我们的情况下,这是不可能的。有没有其他办法可以让这个工作?
编辑:我忘了提及这个应用程序可以(也是最常见的)在Win2K上运行而不是XP上,我想我说的是本地网络帐户在XP之前是不可用的?
谢谢。你的最后一个建议看起来就像我的情况一样,我创建了一个专用帐户,并且能够使用此帐户和CreateProcessAsUser()启动我的可执行文件,然后它似乎能够访问网络共享(如果它在管理员组中)... – 2008-10-31 15:02:05
显然,您必须授予您的专用帐户适当的访问权限。 – 2008-11-01 16:17:55