Добавьте команду PowerShell в программу на основе *. 1000 * - PullRequest
0 голосов
/ 10 апреля 2020

Таким образом, у нас есть модуль захвата экрана рабочего стола в нашем программном обеспечении для тех, кто принимает вызовы в диспетчерских центрах, что является дополнительным преимуществом для обеспечения их качества, но он основан на существующей папке «Temp» профиля пользователя, так как именно там он временно записывает видеофайл из get- go.

Проблема в том, что каталог "Temp" иногда случайно удаляется чем-то, поэтому, если он не существует, он больше никогда не будет захватывать видео пока вручную не переустановлен. Я могу получить следующую команду PS, чтобы проверить, существует ли каталог «Temp», и если нет, то принудительно создать его, но реальная проблема заключается в том, как внедрить это в код:

  $path = "$env:userprofile\AppData\Local\Temp\eqagent"
If(!(Test-Path $path))
{
    New-Item -ItemType directory -Path $path -Force
    }

Это Программа, основанная на. NET, поэтому я взломал файл .DLL, отвечающий за эту часть программного обеспечения, в dnSpy, чтобы посмотреть, какой чудак dry скрепляет все это вместе ... (не то, чтобы я знал, что искать для :)) Сначала он пытался найти все параметры командной строки, которые существовали, чтобы помочь переустановить его вручную, но теперь это проявилось в желании исправить его навсегда у источника! Таким образом, единственное подходящее место, которое, как мне кажется, я могу найти, связано с этим в коде:

    public static void Start(string id)
    {
        if (id != ScreenCapture.captureIDCurrent)
        {
            if (!Directory.Exists(Eq.Agent.Client.Child.Application.TempPath))
            {
                throw new Exception("The temp directory required for storing screen captures was not found or inaccessible.");
            }
            if (!XVidCodec.Exists)
            {
                throw new ComponentRequiredException(XVidCodec.Name);
            }
            ScreenCapture.captureIDCurrent = id;

Не знаю, исправит ли это это, но, похоже, поскольку Powershell основан на. NET а также, что команды из PS могут быть переведены либо легко, либо крайне сложным образом ... как-то так. Поэтому мне любопытно, как первый код может запекаться в последнем коде, а затем сказать ... перекомпилироваться в Visual Studio или что-то в этом духе, как новый .DLL, а затем перезагружаться в память через " regsvr32 "или что-то в этом роде? Где реализовать это именно в коде и как загадки для меня, а также, если что-то еще контролирует это в какой-то другой части сборки. Любой вклад будет более чем признателен!

...