У меня есть приложение 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 #) - нет.
Любая помощь или указатели будут высоко оценены :)
Ben