【发布时间】:2013-04-27 07:29:21
【问题描述】:
我有一个有点奇怪的问题.. 以下行直接在 powershell 中运行良好:
1) powercfg -AVAILABLESLEEPSTATES
2) powercfg -energy
直截了当,-energy 生成它的文件,还有其他我可以玩的标志。
从 C# 运行第 1 行也可以正常工作(在本网站中的任何精彩方法中,例如
Powershell s_ps = PowerShell.Create();
s_ps.AddScript("powercfg -AVAILABLESLEEPSTATES");
Collection<PSObject> results = s_ps.Invoke();
(或通过管道运行所有内容的版本,或创建 PSCommand(),等等)
在 -energy 上运行相同的东西可以从控制台正常工作,但如果我尝试通过 C# 调用它,它会开始谈论缺少“energy.dll”或其依赖项之一。所有的 dll(包括依赖项)当然都在那里——因为它是从命令行运行的,并且无论如何都要手动验证。
Visual Studio 正在管理员模式下运行,为了安全起见,我构建了应用程序并尝试直接在管理员模式下运行它
我试过手动加载dll
s_ps.AddScript(@"[Reflection.Assembly]::LoadFrom('C:\Windows\System32\energy.dll') | Out-Null");
但它只是抛出一个额外的错误说它
'无法加载文件或程序集 'file:///C:\Windows\System32\energy.dll' 或其依赖项之一'
是否有人对其他会导致问题的问题有任何想法? (必须运行一段时间,但如果我在其他人之前找到解决方案,我当然会发布它,虽然没有运气,但大部分时间都在努力)
【问题讨论】:
-
尝试查看左侧
Related下方的一些链接,这可能对您有所帮助stackoverflow.com/questions/527513/… -
感谢您的建议,我实际上已经浏览了那一个和几十个。我调用脚本没有问题(上面的代码基于这些不同的链接),问题是通过c#它无法加载内置的energy.dll(该链接和其他链接没有涵盖)。除非我错过了一个 - 肯定有可能我在没有意识到的情况下跳过了一个链接?这不是一个 cutsom dll (stackoverflow.com/questions/4259727/…) 或类似的东西。
-
(更新:找到了一个不需要这个调用的解决方法。我会在我的休息时间继续搞砸这个,如果我想出一些东西我会发布它 - 无论问题是什么,我我相信它会再次出现)
标签: c# powershell dll energy powercfg