У меня пользовательская служба Windows (написанная в C#), которую я в основном использую для приложений Windows Windows или черного списка. Я не хочу использовать какую -либо существующую функциональность Windows или какое -либо коммерческое решение. Я хочу проверить, пытается ли стандартный пользователь запустить приложение Windows с опцией run As Administrator из контекстного меню. Использование ManagementEventWatcher () , которое подписывается на __instancecreationevent :
public class ProcessLaunchMonitorService : ServiceBase
{
public ProcessLaunchMonitorService()
{
this.ServiceName = "testservice";
}
protected override void OnStart(string[] args)
{
string query = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'";
// Setup the watcher
_watcher = new ManagementEventWatcher(query);
_watcher.EventArrived += new EventArrivedEventHandler(OnProcessStarted);
_watcher.Start();
}
private void OnProcessStarted(object sender, EventArrivedEventArgs e)
{
// Get the process name
var process = (ManagementBaseObject)e.NewEvent["TargetInstance"];
string processName = process["Name"].ToString();
int processId = Convert.ToInt32(process["ProcessId"]);
var launchedProcess = Process.GetProcessById(processId);
// want to check if this launchedProcess was launched with Run as Administrator option
}
}
< /code>
[b] текущий результат < /strong>:
Этот код полностью исполняется без какой -либо ошибки. В этом коде на самом деле отсутствует часть для обнаружения, если пользователь использовал опцию Run As Administrator
при запуске приложения.
ожидаемый результат [/b]:
Как я могу проверить, использовал ли пользователь опцию запуска в качестве администратора при запуске приложения (
У меня пользовательская служба Windows (написанная в C#), которую я в основном использую для приложений Windows Windows или черного списка. Я не хочу использовать какую -либо существующую функциональность Windows или какое -либо коммерческое решение. Я хочу проверить, пытается ли стандартный пользователь запустить приложение Windows с опцией run As Administrator из контекстного меню. Использование ManagementEventWatcher () , которое подписывается на __instancecreationevent : [code]public class ProcessLaunchMonitorService : ServiceBase { public ProcessLaunchMonitorService() { this.ServiceName = "testservice"; }
protected override void OnStart(string[] args) { string query = "SELECT * FROM __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"; // Setup the watcher _watcher = new ManagementEventWatcher(query); _watcher.EventArrived += new EventArrivedEventHandler(OnProcessStarted); _watcher.Start(); }
private void OnProcessStarted(object sender, EventArrivedEventArgs e) { // Get the process name var process = (ManagementBaseObject)e.NewEvent["TargetInstance"]; string processName = process["Name"].ToString(); int processId = Convert.ToInt32(process["ProcessId"]); var launchedProcess = Process.GetProcessById(processId); // want to check if this launchedProcess was launched with Run as Administrator option } } < /code> [b] текущий результат < /strong>: Этот код полностью исполняется без какой -либо ошибки. В этом коде на самом деле отсутствует часть для обнаружения, если пользователь использовал опцию Run As Administrator [/code] при запуске приложения. ожидаемый результат [/b]: Как я могу проверить, использовал ли пользователь опцию запуска в качестве администратора при запуске приложения ([code]launchedProcess[/code])?