Win32exception: доступен в System.diagnostics.processmanager.openProcess ()C#

Место общения программистов C#
Ответить
Anonymous
 Win32exception: доступен в System.diagnostics.processmanager.openProcess ()

Сообщение Anonymous »

Во -первых, я наивный разработчик и не имею особого особого понимания этих кодов.
Я получаю отрицательный доступ в блоке кода, который пытается получить номер версии одного из приложений. Но когда файл установки запускается в разных машинах, а журнал проверяется, он выбрасывает win32exception : доступновлен доступ. Запротив ExecutionLevel to officeEadmin, который может отображать диалоговое окно и дать пользователю элемент управления по запуску приложения.) < /em> < /p>

Мне нужно решить эту проблему. После прочтения некоторых блогов, я считаю, что это должно быть связано с отсутствием достаточного количества прав для получения необходимой информации. Но я все еще неясен, как решить /решить это. < /P>

Исключение из файла журнала: < /p>

[ 1,11216] 2017-04-17T11:43:53 - -------------------- Win32Exception caught --------------------
[ 1,11216] 2017-04-17T11:43:53 - Access is denied
[ 1,11216] 2017-04-17T11:43:53 - (Win32Err=0x00000005)
[ 1,11216] 2017-04-17T11:43:53 - Stack trace is :
[ 1,11216] 2017-04-17T11:43:53 - at System.Diagnostics.ProcessManager.OpenProcess(Int32 processId, Int32 access, Boolean throwIfExited)
at System.Diagnostics.NtProcessManager.GetModuleInfos(Int32 processId, Boolean firstModuleOnly)
at System.Diagnostics.NtProcessManager.GetFirstModuleInfo(Int32 processId)
at System.Diagnostics.Process.get_MainModule()
at IMPMDesktopClient.BaseIMClientDriver.GetVersion(UIntPtr windowUIntPtr)
at IMPMDesktopClient.WindowDetector.Hooks.WindowsEventArgs..ctor(Int32 eventNum, UIntPtr windowHandle, Int32 idObject, Int32 idChild, String clsName, Rectangle pos)
at IMPMDesktopClient.WindowDetector.Hooks.EventHooks.CheckForWindowOfInterest(UIntPtr hWnd, UIntPtr arg)
at IMPMDesktopClient.WindowDetector.Hooks.EventHooks.CheckTopWindow(UIntPtr hWnd, UIntPtr arg)
at IMPMDesktopClient.Win32Interop.EnumWindows(WndEnumCallback callback, UIntPtr param)
at IMPMDesktopClient.WindowDetector.Hooks.EventHooks.DetectTheseWindowsNow(List`1 classes)
at IMPMDesktopClient.WindowDetector.WindowClassManager.OnPostRegistration()
[ 1,11216] 2017-04-17T11:43:53 - --------------------Win32Exception--------------------
< /code>

code for getVersion (): < /p>

public static Version GetVersion(UIntPtr windowUIntPtr)
{
var noOfTrials = 2;
var threadSleepPeriod = 1000;
Process imProc = null;

while (noOfTrials > 0)
{
try
{
imProc = Win32Interop.GetWindowProcess(windowUIntPtr);
Version version;
try
{
version = GetModuleVersion(imProc.MainModule);
}
catch (System.ComponentModel.Win32Exception)
{
version = GetModuleVersion(imProc.Id);
}

// If getting version fails, retry it.
if (version == null || (version.Major == 0 && version.Minor == 0))
{
// The thread will sleep for 1s after 1st trial, 3s after 2nd trial.
Thread.Sleep(threadSleepPeriod);
noOfTrials--;
threadSleepPeriod += 2000;
}
else
return version;

if (noOfTrials == 0)
{
Log.Write(...);
}
}
catch (Exception ex)
{
Log.Write(...);
}
}
return new Version();
}


Подробнее здесь: https://stackoverflow.com/questions/434 ... openproces
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»