查找用户网络服务的临时文件夹?

时间:2011-03-24 14:40:44

标签: .net sql-server windows

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

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

我可以检索一个总是有效的文件夹吗?

3 个答案:

答案 0 :(得分:30)

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

  

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

在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上的“本地设置”的本地化名称。

默认情况下,管理员可以写入网络服务配置文件。使用它的临时文件夹就可以了。

答案 1 :(得分:1)

在Windows Vista及更高版本

  1. 系统帐户(NT AUTHORITY\SYSTEM
    C:\Windows\TEMP

  2. 网络服务(NT AUTHORITY\NETWORK SERVICEC:\Windows\ServiceProfiles\NetworkService\AppData\Local\Temp

  3. 本地服务(NT AUTHORITY\LOCAL SERVICEC:\Windows\ServiceProfiles\LocalService\AppData\Local\Temp

答案 2 :(得分:0)

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

或者只是运行:

BACKUP DATABASE [master] TO DISK='master.bak'
GO
来自SSMS的

并查看文件的写入位置。