Таким образом, у нас есть модуль захвата экрана рабочего стола в нашем программном обеспечении для тех, кто принимает вызовы в диспетчерских центрах, что является дополнительным преимуществом для обеспечения их качества, но он основан на существующей папке «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 "или что-то в этом роде? Где реализовать это именно в коде и как загадки для меня, а также, если что-то еще контролирует это в какой-то другой части сборки. Любой вклад будет более чем признателен!