C#在不同的凭证下运行一段代码
Posted
技术标签:
【中文标题】C#在不同的凭证下运行一段代码【英文标题】:C# run piece of code under different credential 【发布时间】: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<XAApplication>
开头的行是:
FileNotFoundException 未处理 C:\Windows\assembly\GAC_MSIL\System.Management.Automation\1.0.0.0__31bf3856ad364e35\System.Management.Automation.dll
我不报告Impersonator
类的代码,基本架构是在链接问题上报告的(它也适用于其他应用程序)。
我错过了什么吗?
【问题讨论】:
这个链接有帮助吗:***.com/questions/6783213/…? 问题好像类似,但是我冒充的用户已经是本地管理员了 是否安装了 Windows Powershell? 是的(版本 2) 堆栈跟踪是什么? 【参考方案1】:看起来模拟没有问题,但是您的代码以某种方式尝试加载不在 GAC 中的程序集 System.Management.Automation.dll,您可以尝试在 GAC 中注册此程序集并再次尝试。
【讨论】:
它已经在 GAC 中注册,并且在不模拟的情况下运行它确实有效 您是否可以使用 exception.ToString() 捕获异常并查看完整的错误消息(包括内部异常)并查看您是否能够获取任何信息以上是关于C#在不同的凭证下运行一段代码的主要内容,如果未能解决你的问题,请参考以下文章
C#编写的WinForm程序,运行一段时间后越来越卡,怎么办?