2013-12-01 7 views
0

Я не уверен, как получить GUID процесса, который я запускаю во время выполнения. Так, например:Захват GUID процесса, запущенного во время выполнения

System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
proc.StartInfo.WorkingDirectory = @"C:\MyDir"; 
proc.StartInfo.FileName = "MyApp.exe"; 
proc.StartInfo.Arguments = "E F G H"; 
proc.Start(); 

Я нашел этот код в другом потоке, который обнажает GUID текущего приложения:

var assembly = typeof(Program).Assembly; 
var attribute = (GuidAttribute)assembly.GetCustomAttributes(typeof(GuidAttribute), true)[0]; 
var id = attribute.Value; 

, но я не уверен, как применить это к proc или если есть атрибут в proc, который будет показывать свой GUID. Как я могу получить идентификатор GUID proc?

ответ

0

Процессы не имеют идентификаторов GUID.

Вы можете получить атрибут из известного класса в управляемой сборки с помощью Reflection:

Assembly.Load(path).GetType("Namespace.Type") 
        .GetCustomAttributes(typeof(GuidAttribute), true)[0] 
+1

Код, который вы дали не то, что ОП хочет, он используется, чтобы получить атрибут некоторого типа в сборке. –

+1

@KingKing Можете ли вы уточнить? Это похоже на вопрос. Он также объясняет, что у процессов нет назначенного им GUID. –

+0

@SimonWhitehead первый может выглядеть правильно, но код, очевидно, используется для получения атрибута GUID какого-либо типа, я думаю, что OP может хотеть означать, что он хочет получить GUID файла ** exe **, который также является ** сборка **, так почему же у нее нет GUID? Конечно, это не процесс, который он имел в виду, он мог бы означать ** exe-файл ** –

0

Если вы ищете идентификатор процесса, вы можете просто получить свойство с помощью proc.Id.

См Process.Id Property documentation

+0

Вот где я начал, но целое число, возвращаемое из proc.id, не то, что мне нужно. – Justin204

Смежные вопросы