Попробуйте Модуль PowerShell для служб терминалов :
Get-TSSession -ComputerName comp1 -UserName user1 | Stop-TSSession -Force
Чтобы противостоять утверждению Брайана, переписать код из ответа Леппи ссылка :
using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;
namespace DynamicX86
{
class Program
{
const uint PAGE_EXECUTE_READWRITE = 0x40;
const uint MEM_COMMIT = 0x1000;
[DllImport("kernel32.dll", SetLastError = true)]
static extern IntPtr VirtualAlloc(IntPtr lpAddress, uint dwSize, uint flAllocationType, uint flProtect);
private delegate int IntReturner();
static void Main(string[] args)
{
List<byte> bodyBuilder = new List<byte>();
bodyBuilder.Add(0xb8);
bodyBuilder.AddRange(BitConverter.GetBytes(42));
bodyBuilder.Add(0xc3);
byte[] body = bodyBuilder.ToArray();
IntPtr buf = VirtualAlloc(IntPtr.Zero, (uint)body.Length, MEM_COMMIT, PAGE_EXECUTE_READWRITE);
Marshal.Copy(body, 0, buf, body.Length);
IntReturner ptr = (IntReturner)Marshal.GetDelegateForFunctionPointer(buf, typeof(IntReturner));
Console.WriteLine(ptr());
}
}
}
Я считаю, что вы можете добавить управляемый проект C ++ к своему решению и предоставить метод с использованием инструкций asm. Вы можете ссылаться на этот проект из любого проекта .Net (не только C #), поэтому вы можете вызвать этот метод оттуда.
Да.
Просто используйте P / Invoke для функций winapi.
WriteProcessMemory или найдите указатель на свой буфер. Включите бит выполнения на странице (не помните функцию для этого).
CreateThread на указателе. WaitForObject (если вы хотите, чтобы он был однопоточным).
Нет, но вы можете написать сборку на C ++ и вызывать ее из C #. См. этот пример .