gpt4 book ai didi

c# - 检索 CLSID 为 {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} 的组件的 COM 类工厂失败

转载 作者:太空狗 更新时间:2023-10-29 18:21:52 28 4
gpt4 key购买 nike

我正在创建停止 IIS 默认网站的应用程序。我使用 PowerShell 脚本来停止网站,因为该脚本是从我的网站执行的。

这是我的脚本:

Import-Module C:\Windows\System32\WindowsPowerShell\v1.0\Modules\WebAdministration
Stop-Website 'Default Web Site'
my copy code
Start-Website 'Default Web Site'

这是我的 C# 代码:

PowerShell _PowerShell = PowerShell.Create();

Runspace rs = RunspaceFactory.CreateRunspace();
rs.Open();

_PowerShell.Runspace = rs;
_PowerShell.AddScript(@"Set-ExecutionPolicy RemoteSigned -scope LocalMachine").Invoke();
_PowerShell.AddScript(@"E:\DE.TEST\Power_Shell\Scripts\StopIISDefaultSite.ps1").Invoke();

if (_PowerShell.HadErrors)
{
Collection<ErrorRecord> errors = _PowerShell.Streams.Error.ReadAll();

foreach (var item in errors)
{
Console.WriteLine(item.ToString());
}
}

Console.ReadLine();

显示如下错误

Retrieving the COM class factory for component with CLSID {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} failed due to the following error: 80040154 Class not registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).

最佳答案

您需要检查运行 PS 代码的 PowerShell 实例是 32 位还是 64 位,并为该目标平台构建您的解决方案。您可以使用以下方法检查:

if([IntPtr]::size -eq 8) { Write-Host 'x64' } else { Write-Host 'x86' }

Source

正如评论部分所指出的,如果您运行的是 64 位 PowerShell,则为 AnyCPU 构建解决方案并取消选中“首选 32 位”可解决问题。

关于c# - 检索 CLSID 为 {688EEEE5-6A7E-422F-B2E1-6AF00DC944A6} 的组件的 COM 类工厂失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31626244/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com