Ошибка при запуске VBS через приложение C # - PullRequest
0 голосов
/ 01 октября 2018

Я хочу, чтобы мое приложение на C # запускало внешний vbscript.Этот VBS выполняет некоторые действия и должен извлечь данные из реестра.

VBScript запущен, но у меня есть ошибка: Невозможно открыть значение реестра для чтения.

Я не очень понимаю, почему.

Вот как я запускаю VBScript:

            Process scriptProc = new Process();
            scriptProc.StartInfo.FileName = @"c:\windows\system32\wscript";
            scriptProc.StartInfo.WorkingDirectory = repository + p + "\\"; <-- location of my script : C:\temp\soft\
            scriptProc.StartInfo.Arguments = "MyScript.vbs";
            scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            scriptProc.StartInfo.Verb = "runas";
            scriptProc.Start();
            scriptProc.WaitForExit();
            scriptProc.Close();

И в моем VBS я читаю значение следующим образом:

strValue = objShell.RegRead("HKEY_LOCAL_MACHINE\SOFTWARE\MyKey\MySubKey\MyReg_Sz_Entry")

Где «MyReg_Sz_Entry» содержит строковое значение.Это значение корректно возвращается, когда я запускаю vbs нормально, но не с моим кодом C #.

У моей учетной записи есть административные привилегии.

Мне нужна помощь:).

Спасибо в

Ответы [ 2 ]

0 голосов
/ 02 октября 2018

Я наконец-то нашел, что было не так ...

Наконец-то все просто: целевая архитектура моей сборки.

Я изменил ее в настройках Visual Studio моего проекта с "любого процессора"на «64 бита», и теперь все в порядке.

Большое спасибо за вашу помощь.

0 голосов
/ 01 октября 2018

Итак, я пошел и проверил это самИзмените его в соответствии со своими потребностями.

Из окна powershell

csc run.cs
.\run.exe

Results

d: \ coding \ c-sharp \ script.vbs

Dim objShell

Set objShell = CreateObject("WScript.Shell")

strKey = "HKEY_CURRENT_USER\Console\Git CMD\FaceName"
WScript.echo(strKey)
strValue = objShell.RegRead(strKey)
WScript.echo(strValue)

d: \ coding \ c-sharp \ run.cs

using System;
using System.Diagnostics;

namespace RunVBScript
{
    class RunVBScript
    {
        static void Main() 
        {
            Process scriptProc = new Process();
            scriptProc.StartInfo.FileName = @"c:\windows\system32\wscript";
            scriptProc.StartInfo.WorkingDirectory = @"d:\coding\c-sharp";
            scriptProc.StartInfo.Arguments = @"d:\coding\c-sharp\script.vbs";
            scriptProc.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
            scriptProc.StartInfo.Verb = "runas";
            scriptProc.Start();
            scriptProc.WaitForExit();
            scriptProc.Close();
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...