查找终端服务用户';的文档文件夹

本文关键字:文档 文件夹 终端 服务 用户 查找 | 更新日期: 2023-09-27 18:20:10

我正试图允许用户通过包含浏览器插件的IIS aspx页面将本地扫描仪与终端服务器一起使用。该插件可以扫描文件并将数据传递到aspx页面,该页面将文件上传到服务器。

我正在使用HttpContext.Current.User.Identity.Name获取一个包含远程用户名称的字符串。如何在终端服务器上找到用户的文档文件夹?

查找终端服务用户';的文档文件夹

取得了一些进展。以下是使用Powershell查找已知用户名的路径的方法:

$user = Get-WmiObject Win32_UserAccount | Where-Object { $_.Name -eq 'known_username' }
cd 'HKLM:'software'Microsoft'Windows NT'CurrentVersion'ProfileList'
$key = Get-Item $user.SID
$saveLocation = $key.GetValue("ProfileImagePath")

这是C#版本:

string loginName = HttpContext.Current.User.Identity.Name;
Regex r = new Regex(@"'w+['']");
string userName = r.Replace(loginName, "");
throw new System.ArgumentException("Debug: '" + HttpContext.Current.User.Identity.IsAuthenticated.ToString() +"'", "userName");
SelectQuery sQuery = new SelectQuery("Win32_UserAccount", "name='" + userName + "'");
ManagementObjectSearcher mSearcher = new ManagementObjectSearcher(sQuery);
string sid = "";
foreach (ManagementObject mObject in mSearcher.Get()) 
{
    sid = mObject["SID"].ToString();
    break; //mSearcher.Get() is not indexable. Behold the hackyness!
}
string saveLocation = Microsoft.Win32.Registry.GetValue(
    "HKEY_LOCAL_MACHINE''Software''Microsoft''Windows NT''CurrentVersion''ProfileList''" + sid,
    "ProfileImagePath", null).ToString();

C#不是我的母语;实现这一点的方法可能不那么生硬。但它确实有效。