gpt4 book ai didi

C# 应用程序调用 Powershell 脚本问题

转载 作者:行者123 更新时间:2023-11-30 21:21:59 25 4
gpt4 key购买 nike

我有一个 C# Winforms 应用程序,它使用以下方法调用一个简单的 powershell 脚本:

Process process = new Process(); 
process.StartInfo.FileName = @"powershell.exe";
process.StartInfo.Arguments = String.Format("-noexit \"C:\\Develop\\{1}\"", scriptName);
process.Start();

powershell 脚本只是读取注册表项并输出子项。

$items = get-childitem -literalPath hklm:\software 

foreach($item in $items)
{
Write-Host $item
}

我遇到的问题是,当我从 C# 应用程序运行脚本时,我得到一组结果,但是当我独立运行脚本(从 powershell 命令行)时,我得到完全不同的一组结果。

从 c# 应用程序运行的结果是:

HKEY_LOCAL_MACHINE\software\Adobe 
HKEY_LOCAL_MACHINE\software\Business Objects
HKEY_LOCAL_MACHINE\software\Helios
HKEY_LOCAL_MACHINE\software\InstallShield
HKEY_LOCAL_MACHINE\software\Macrovision
HKEY_LOCAL_MACHINE\software\Microsoft
HKEY_LOCAL_MACHINE\software\MozillaPlugins
HKEY_LOCAL_MACHINE\software\ODBC
HKEY_LOCAL_MACHINE\software\Classes
HKEY_LOCAL_MACHINE\software\Clients
HKEY_LOCAL_MACHINE\software\Policies
HKEY_LOCAL_MACHINE\software\RegisteredApplications
PS C:\Develop\RnD\SiriusPatcher\Sirius.Patcher.UI\bin\Debug>

当从 powershell 命令行运行时,我得到:

PS M:\> C:\Develop\RegistryAccess.ps1 
HKEY_LOCAL_MACHINE\software\ATI Technologies
HKEY_LOCAL_MACHINE\software\Classes
HKEY_LOCAL_MACHINE\software\Clients
HKEY_LOCAL_MACHINE\software\Equiniti
HKEY_LOCAL_MACHINE\software\Microsoft
HKEY_LOCAL_MACHINE\software\ODBC
HKEY_LOCAL_MACHINE\software\Policies
HKEY_LOCAL_MACHINE\software\RegisteredApplications
HKEY_LOCAL_MACHINE\software\Wow6432Node
PS M:\>

第二组结果与我在注册表中的结果相匹配,但第一组结果(来自 c# 应用程序)不匹配。

任何帮助或指点将不胜感激:)

最佳答案

这实际上并不是将 PowerShell 嵌入 C# api 的特别好的方法。有相应的 API。

您可以在 MSDN 上找到它们的示例,但在您的情况下,可能看起来像

PowerShell.Create().AddScript("get-childitem -literalPath hklm:\software").Invoke()

您还可以查看此 blog post ,它将向您展示如何在 API 内部点源以及如何使用此 API 获取 PowerShell 中的其他数据流。

希望对你有帮助

关于C# 应用程序调用 Powershell 脚本问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2462695/

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