Как я использую Знатока через прокси?

Это работает на dlls, заблокированный другими процессами. Эта стандартная программа не узнает, например, что текстовый файл заблокирован wordprocess.

C#:

using System.Management; 
using System.IO;   

static class Module1 
{ 
static internal ArrayList myProcessArray = new ArrayList(); 
private static Process myProcess; 

public static void Main() 
{ 

    string strFile = "c:\\windows\\system32\\msi.dll"; 
    ArrayList a = getFileProcesses(strFile); 
    foreach (Process p in a) { 
        Debug.Print(p.ProcessName); 
    } 
} 


private static ArrayList getFileProcesses(string strFile) 
{ 
    myProcessArray.Clear(); 
    Process[] processes = Process.GetProcesses; 
    int i = 0; 
    for (i = 0; i <= processes.GetUpperBound(0) - 1; i++) { 
        myProcess = processes(i); 
        if (!myProcess.HasExited) { 
            try { 
                ProcessModuleCollection modules = myProcess.Modules; 
                int j = 0; 
                for (j = 0; j <= modules.Count - 1; j++) { 
                    if ((modules.Item(j).FileName.ToLower.CompareTo(strFile.ToLower) == 0)) { 
                        myProcessArray.Add(myProcess); 
                        break; // TODO: might not be correct. Was : Exit For 
                    } 
                } 
            } 
            catch (Exception exception) { 
            } 
            //MsgBox(("Error : " & exception.Message)) 
        } 
    } 
    return myProcessArray; 
} 
} 

VB.Net:

Imports System.Management
Imports System.IO

Module Module1
Friend myProcessArray As New ArrayList
Private myProcess As Process

Sub Main()

    Dim strFile As String = "c:\windows\system32\msi.dll"
    Dim a As ArrayList = getFileProcesses(strFile)
    For Each p As Process In a
        Debug.Print(p.ProcessName)
    Next
End Sub


Private Function getFileProcesses(ByVal strFile As String) As ArrayList
    myProcessArray.Clear()
    Dim processes As Process() = Process.GetProcesses
    Dim i As Integer
    For i = 0 To processes.GetUpperBound(0) - 1
        myProcess = processes(i)
        If Not myProcess.HasExited Then
            Try
                Dim modules As ProcessModuleCollection = myProcess.Modules
                Dim j As Integer
                For j = 0 To modules.Count - 1
                    If (modules.Item(j).FileName.ToLower.CompareTo(strFile.ToLower) = 0) Then
                        myProcessArray.Add(myProcess)
                        Exit For
                    End If
                Next j
            Catch exception As Exception
                'MsgBox(("Error : " & exception.Message))
            End Try
        End If
    Next i
    Return myProcessArray
End Function
End Module
120
задан Duncan Jones 18 April 2018 в 11:13
поделиться

3 ответа

Скорее всего, это вызвано двумя проблемами:

  1. Вам необходимо добавить конфигурацию прокси в ваш settings.xml. Вот уловка в поле вашего имени пользователя. Убедитесь, что он выглядит как домен \ имя пользователя. Важно указать домен и поставить точную косую черту '\'. Вы можете использовать тег , если ваш пароль содержит символы, не поддерживающие xml.
  2. Я заметил, что maven 2.2.0 иногда вообще не работает через прокси, а 2.2.1 работает совершенно нормально.

Если некоторые из них опущены - maven может вывести из строя случайные сообщения об ошибках.

Надеюсь, что я спас кого-то от поиска в Google по этой проблеме в течение 6 часов, как и я.

15
ответ дан 24 November 2019 в 01:36
поделиться

Подробные сведения о настройке прокси для Maven см. В мини-руководстве .

По сути, вам необходимо убедиться, что раздел прокси-серверов находится в глобальных настройках ( [maven install] /conf/settings.xml ) или пользовательские настройки ( $ {user.home} /. m2 / settings.xml ) настроены правильно. Лучше сделать это в ваших пользовательских настройках, чтобы не хранить пароль в виде обычного текста в общедоступном месте.

Maven 2.1 представил шифрование пароля , но я не дошел до проверки, если шифрование применяется к настройкам прокси, а также к паролям репозитория (хотя не понимаю, почему бы этого не сделать).

Для информации, в файле settings.xml есть закомментированная конфигурация прокси и инструкции по ее изменению.

Из мини-гида, ваши настройки должны выглядеть примерно так:

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
                  http://maven.apache.org/xsd/settings-1.0.0.xsd">
[...]
  <proxies>
    <proxy>
      <active>true</active>
      <protocol>http</protocol>
      <host>proxy.somewhere.com</host>
      <port>8080</port>
      <username>proxyuser</username>
      <password>somepassword</password>
      <nonProxyHosts>www.google.com|*.somewhere.com</nonProxyHosts>
    </proxy>
  </proxies>
[...]
</settings>
141
ответ дан 24 November 2019 в 01:36
поделиться

Я знаю, что это не совсем ответ на вопрос, но, возможно, стоит знать об этом тем, кто ищет этот пост. Также можно установить прокси-сервер репозитория Maven, например nexus .

Ваш maven будет настроен для связи с локальным прокси-сервером Nexus, а затем Nexus будет извлекать (и кэшировать) артефакты. Его можно настроить через веб-интерфейс и поддерживает (http) прокси).

Это может быть преимуществом, особенно в корпоративных настройках, поскольку артефакты доступны локально и могут быть загружены быстро, и вы не зависимы от этого. о доступности внешних репозиториев Maven.

Чтобы вернуться к вопросу; с Nexus есть красивый графический интерфейс для настройки прокси, и это нужно делать только в одном месте, а не для каждого разработчика.

4
ответ дан 24 November 2019 в 01:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: