find用户networking服务的临时文件夹?

我试图编写一个包装来帮助我们的客户恢复SQL Server数据库。 默认情况下,SQL Server作为用户networking服务运行,其权限非常有限。 我们的客户有时会感到困惑,他们不能指向任何位置的备份文件并将其恢复。

我想将文件从他们select的位置复制到SQL Server可以访问的临时位置,但我很难find位置。 我不能只调用Path.GetTempPath(),因为这给了我SQL Server不能访问的用户临时文件。

有一个文件夹,我可以检索,将始终工作?

网络服务帐户的临时文件夹位于此处:

%WINDIR%\ ServiceProfiles \网络服务\应用程序数据\本地的\ Temp

在Windows XP / 2003上,网络服务配置文件位于一般用户配置文件目录中。 在德国的机器上就是这样的:

C:\ Dokumente und Einstellungen \ NetworkService \ Lokale Einstellungen \ Temp

在英语电脑上,它将在这里:

C:\ Documents and Settings \ NetworkService \ Local Settings \ Temp

您可以通过查询此注册表值来找到所有Windows版本上配置文件的路径:

HKLM \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ ProfileList \ S-1-5-20 \ ProfileImagePath

尽管如此,XP / 2003并没有给你本地化的“本地设置”名称。

默认情况下,管理员可以写入网络服务配置文件。 使用它的临时文件夹为您的目的应该是完全正常的。

为什么不把NETWORK_SERVICE权限授予特定的文件夹,并告诉用户将备份文件放在那里?

或者运行:

 BACKUP DATABASE [master] TO DISK='master.bak' GO 

从SSMS,看看文件被写入。