如何让我的代码在模拟时访问程序集
How to let my code access assembly while impersonating
我正在尝试使用 WindowsIdentity.RunImpersonated
读取共享文件夹中的图像。问题是在模拟期间,我的代码无法访问 System.Drawing.Common
程序集,可能是因为模拟用户没有访问它,我该怎么办。
WindowsIdentity.RunImpersonated(safeAccessTokenHandle,() => {
string[] files = Directory.GetFiles(path, pattern);
if (files.Length > 0)
{
foreach (string file in files)
{
string[] f = file.Split('.');
FileStream fstream = new FileStream(file, FileMode.Open);
Bitmap bitmap = new Bitmap(fstream);
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, ImageFormat.Jpeg);
byte[] byteImage = ms.ToArray();
model.Archive.Add(Convert.ToBase64String(byteImage));
fstream.Close();
}
}
});
这是我得到的错误:
FileLoadException: Could not load file or assembly 'System.Drawing.Common, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Access is denied.
如果有人遇到这个问题,这对我有用
在WindowsIdentity.RunImpersonated
之前添加这行代码
Assembly.Load("System.Drawing.Common, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51");
我正在尝试使用 WindowsIdentity.RunImpersonated
读取共享文件夹中的图像。问题是在模拟期间,我的代码无法访问 System.Drawing.Common
程序集,可能是因为模拟用户没有访问它,我该怎么办。
WindowsIdentity.RunImpersonated(safeAccessTokenHandle,() => {
string[] files = Directory.GetFiles(path, pattern);
if (files.Length > 0)
{
foreach (string file in files)
{
string[] f = file.Split('.');
FileStream fstream = new FileStream(file, FileMode.Open);
Bitmap bitmap = new Bitmap(fstream);
MemoryStream ms = new MemoryStream();
bitmap.Save(ms, ImageFormat.Jpeg);
byte[] byteImage = ms.ToArray();
model.Archive.Add(Convert.ToBase64String(byteImage));
fstream.Close();
}
}
});
这是我得到的错误:
FileLoadException: Could not load file or assembly 'System.Drawing.Common, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51'. Access is denied.
如果有人遇到这个问题,这对我有用 在WindowsIdentity.RunImpersonated
之前添加这行代码Assembly.Load("System.Drawing.Common, Version=5.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51");