Исполняемый файл ведет себя иначе при запуске через WMI по сравнению с локальным запуском

#c# #python #python-3.x #wmi #executable

#c# #python #python-3.x #wmi #исполняемый файл

Вопрос:

У меня есть следующий файл c sharp, скомпилированный как исполняемый файл.

 using System;
using System.Runtime.InteropServices;
using System.Text;
using System.IO;
using System.Threading;

namespace Foreground {
  class GetForegroundWindowTest {

    [DllImport("user32.dll", CharSet=CharSet.Auto, ExactSpelling=true)]
    public static extern IntPtr GetForegroundWindow();

    [DllImport("user32.dll", CharSet=CharSet.Unicode, SetLastError=true)]
    public static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount);

    public static void Main(string[] args){
        while (true){
            IntPtr fg = GetForegroundWindow(); //use fg for some purpose

            var bufferSize = 1000;
            var sb = new StringBuilder(bufferSize);

            GetWindowText(fg, sb, bufferSize);

            using (StreamWriter sw = File.AppendText("C:\Office Viewer\OV_Log.txt")) 
            {
                sw.WriteLine(DateTime.Now.ToString("yyyy-MM-dd_HH:mm:ss,")   sb.ToString());
            }

            Thread.Sleep(5000);
        }
    }
  }
}
  

Когда я запускаю этот исполняемый файл на локальном компьютере, он выдает как дату, так и имя текущего окна.

когда я запускаю этот исполняемый файл с удаленного компьютера с использованием wmi, он выдает дату, а имя текущего окна остается пустым, что, как я полагаю, означает, что оно возвращает значение null. У кого-нибудь есть исправление для этого?

Программа, которая запускает исполняемый файл wmi, написана на python и имеет вид:

 import wmi

IP         = '192.168.165.x'
USERNAME   = 'username'
PASSWORD   = 'password'
REMOTE_DIR = 'c: ... '

remote_pc = wmi.WMI (IP, user = USERNAME, password = PASSWORD)

exe_remote_path = join (['\\', IP, '\', REMOTE_DIR, filename)

remote_pc.Win32_Process.Create (CommandLine = exe_remote_path)
  

Ответ №1:

Это может быть проблемой…..

По соображениям безопасности Win32_Process.Метод Create нельзя использовать для удаленного запуска интерактивного процесса.

из msdn