我使用Visual Studio 2013,Windows 8.1。Environment.SpecialFolder和Impersonation
我試着從模擬用戶得到Environment.SpecialFolder
值,但我總是得到空字符串值。
有什麼建議嗎?
我的測試代碼:
[TestMethod]
public void Environment_Folders_is_ok()
{
Console.WriteLine("CURRENT USER " + Environment.UserName);
GlobalVariables.MyDocumentsPath = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Console.WriteLine(GlobalVariables.MyDocumentsPath);
var p1 = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
Console.WriteLine(p1);
p1 = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Console.WriteLine(p1);
p1 = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
Console.WriteLine(p1);
p1 = System.Environment.GetFolderPath(Environment.SpecialFolder.MyComputer);
Console.WriteLine(p1);
var user = new Utils().DecryptValue(ConfigurationManager.AppSettings["User"]);
var password = new Utils().DecryptValue(ConfigurationManager.AppSettings["Password"]);
var domain = new Utils().DecryptValue(ConfigurationManager.AppSettings["Domain"]);
GlobalVariables.Impersonate = true;
using (new Impersonator(user, domain, password))
{
Console.WriteLine("IMPERSONATE with " + user);
p1 = System.Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments);
Console.WriteLine(p1);
p1 = System.Environment.GetFolderPath(Environment.SpecialFolder.UserProfile);
Console.WriteLine(p1);
p1 = System.Environment.GetFolderPath(Environment.SpecialFolder.Desktop);
Console.WriteLine(p1);
p1 = System.Environment.GetFolderPath(Environment.SpecialFolder.DesktopDirectory);
Console.WriteLine(p1);
}
}
輸出:
CURRENT USER MYUSER
C:\用戶\ MYUSER \文件
C:\用戶\ MYUSER
C:\ Users \ MyUser \ Desktop
C:\ Users \ M yUser \桌面與user2的IMPERSONATE
更新:
除了,我用FolderBrowserDialog
和方法ShowDialog
,我得到錯誤
無法檢索根文件夾
當我使用模擬用戶
try
{
Console.WriteLine("FolderBrowserDialog. IMPERSONATE WITH " + user);
using (var fbd = new FolderBrowserDialog())
{
Console.WriteLine(fbd.RootFolder);
p1 = System.Environment.GetFolderPath(fbd.RootFolder);
Console.WriteLine(p1);
DialogResult result = fbd.ShowDialog();
}
}
catch (System.InvalidOperationException ex)
{
Assert.AreEqual("Unable to retrieve the root folder.", ex.Message, "No se esperaba " + ex.Message);
}
輸出:
的FolderBrowserDialog。與用戶2 IMPERSONATE
桌面