【问题标题】:C# run piece of code under different credentialC#在不同的凭证下运行一段代码
【发布时间】:2013-06-14 14:25:18
【问题描述】:

参考THIS QUESTION 我能够以不同的用户身份执行一些代码。 现在,我试图以具有管理员权限的用户身份执行一段代码,但我收到了丢失文件的错误。代码是这样的:

using (new Impersonator("domainAdmin", "DOMAIN", "myStup1dPa$$w0rd"))
{
    GetXAApplicationByName apps = new GetXAApplicationByName();
    apps.BrowserName = new string[] { "*" };
    IEnumerable<XAApplication> result = CitrixRunspaceFactory.DefaultRunspace.ExecuteCommand(apps);
    // other code...
}

错误在最后报告的行抛出,以IEnumerable&lt;XAApplication&gt;开头的行是:

FileNotFoundException 未处理 C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll

我不报告Impersonator 类的代码,基本架构是在链接问题上报告的(它也适用于其他应用程序)。

我错过了什么吗?

【问题讨论】:

  • 这个链接有帮助吗:stackoverflow.com/questions/6783213/…?
  • 问题好像类似,但是我冒充的用户已经是本地管理员了
  • 是否安装了 Windows Powershell?
  • 是的(版本 2)
  • 堆栈跟踪是什么?

标签: c# credentials


【解决方案1】:

看起来模拟没有问题,但是您的代码以某种方式尝试加载不在 GAC 中的程序集 System.Management.Automation.dll,您可以尝试在 GAC 中注册此程序集并再次尝试。

【讨论】:

  • 它已经在 GAC 中注册,并且在不模拟的情况下运行它确实有效
  • 您是否可以使用 exception.ToString() 捕获异常并查看完整的错误消息(包括内部异常)并查看您是否能够获取任何信息
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-11-02
  • 2014-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-02-16
相关资源
最近更新 更多