#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