Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Ping & Windows 7 (https://www.delphipraxis.net/146819-ping-windows-7-a.html)

capo 27. Jan 2010 12:07


Ping & Windows 7
 
Hallo...
folgende meldung erhalte ich bei unten stehendem Code.
Ich kann unter Windows 7 nicht mehr pingen, kann mir jemand dabei helfen?

Zitat:

---------------------------
Project1
---------------------------
Socket kann nicht zugewiesen werden.
---------------------------
OK
---------------------------
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, IdBaseComponent, IdComponent, IdRawBase, IdRawClient,
  IdIcmpClient, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    ICMP: TIdIcmpClient;
    ListBox1: TListBox;
    procedure ICMPReply(ASender: TComponent;
      const AReplyStatus: TReplyStatus);
    procedure Button1Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.ICMPReply(ASender: TComponent;
  const AReplyStatus: TReplyStatus);

var
  sTime: string;
begin
  if (AReplyStatus.MsRoundTripTime = 0) then
    sTime := '< 1'
  else
    sTime := '=';

  Listbox1.Items.Add(Format('%d bytes from %s: icmp_seq=%d ttl=%d time%s%d ms',
                            [AReplyStatus.BytesReceived,
                             AReplyStatus.FromIpAddress,
                             AReplyStatus.SequenceId,
                             AReplyStatus.TimeToLive,
                             sTime,
                             AReplyStatus.MsRoundTripTime]));
end;


procedure TForm1.Button1Click(Sender: TObject);
var
i: Integer;
begin
Icmp.Host := 'www.delphi-treff.de';
for i := 1 to 4 do
begin
  Icmp.Ping;
   Application.ProcessMessages;
end;
end;
end.

Luckie 27. Jan 2010 12:11

Re: Ping & Windows 7
 
Für den Indy Ping braucht man Administratorenrechte. Dürfte also schon unter Vista nicht geklappt haben.

Bernhard Geyer 27. Jan 2010 12:11

Re: Ping & Windows 7
 
AFAIK benötigt die PING-Komponente von Indy Admin-Rechte.

Und nein - wenn du UAC aktiv hast hat dein Prozess keine Adminrechte auch wenn du in der Admingruppe bist.

capo 27. Jan 2010 12:33

Re: Ping & Windows 7
 
Okay...und was kann ich nun tun, muss mein Programm dann immmer als Admin ausgeführt werden?
und was ist mit
Zitat:

Und nein - wenn du UAC aktiv
gemeint?
Gruss vom Capo

Bernhard Geyer 27. Jan 2010 12:59

Re: Ping & Windows 7
 
Zitat:

Zitat von capo
Okay...und was kann ich nun tun, muss mein Programm dann immmer als Admin ausgeführt werden?

Willst du das wirklich immer den UAC-Dialog zu haben? Nimm lieber ein PING-Komponente die keine Adminrechte benötigt (Wie die von den ICS-Komponenten)

Zitat:

Zitat von capo
und was ist mit
Zitat:

Und nein - wenn du UAC aktiv
gemeint?
Gruss vom Capo

Weist du was UAC ist?

capo 27. Jan 2010 13:04

Re: Ping & Windows 7
 
Zitat:

Nimm lieber ein PING-Komponente die keine Adminrechte benötigt (Wie die von den ICS-Komponenten)
Super, das hört sich ja gut an.


Zitat:

Weist du was UAC ist?
Ja, habs nachgelesen. Nur weiß ich nicht wie du das gemeint hast, ich meine den Zusammenhang. UAC ausschalten?

Bernhard Geyer 27. Jan 2010 13:14

Re: Ping & Windows 7
 
Zitat:

Zitat von capo
Ja, habs nachgelesen. Nur weiß ich nicht wie du das gemeint hast, ich meine den Zusammenhang. UAC ausschalten?

UAC aktiv -> Prozesse werden ohne Adminrechte gestart
Wenn du willst das sie mit gestartet werden so brauchst du ein entsprechendes Manifest und der User bekommt jedesmal die Meldung das doch ein unbekanntes Programm auf den Rechner zugreifen will -> Abschreckend für "Den normalen Anwender".

TheMiller 27. Jan 2010 13:16

Re: Ping & Windows 7
 
Hier ein Tutorial von mir, welches sich mit der UAC beschäftigt. Dort ist auch beschrieben, wie dein Programm sich Admin-Rechte holt. Auch wenn du jetzt eine andere Komponente nimmst, solltest du dennoch grob darüber bescheid wissen ;)

Wie bekommt mein Programm Admin-Rechte?

Grüße!

capo 27. Jan 2010 13:20

Re: Ping & Windows 7
 
@DJ-SPM ...da hast du Recht. Vielen Dank.

TheMiller 27. Jan 2010 13:22

Re: Ping & Windows 7
 
Gerne. Wenn du Fragen hast, melde dich einfach.

capo 27. Jan 2010 13:31

Re: Ping & Windows 7
 
Hi DJ-SPM
;-) Danke.
Und gleich auch meine erste Frage.
Wenn das Programm auch unter Windows XP, Vista, Windows 7 und 64 Bit und 32 Bit funktionieren soll muss ich diese Zeile doch bestimmt anpassen, oder?
Zitat:

<assemblyIdentity version="1.0.0.0" processorArchitecture="X86" name="VistaLogonCustomizer.exe" type="*"/>
Gruss vom
Capo

TheMiller 27. Jan 2010 13:35

Re: Ping & Windows 7
 
Ehm nein.

WindowsXP ignoriert diese Zeile, da es in Windows noch keine UAC gibt. Da hast du immer Admin-Rechte, wenn dein Benutzerkonto zur Gruppe "Administratoren" gehört.

Alle Systeme ab Vista beachten diese Zeile.

Was die Architektur (32/64Bit) angeht, kann ich dir leider grad nicht sagen, ob diese Zeile unbedingt angepasst werden muss. Ich habe noch kein Programm explizit für 64Bit entwickelt.

Was ich mir denken kann ist, dass die Zeile, so wie sie unten steht für 32 und 64 Bit funktioniert. Stünde bei processorArchitecture="X86" der 64-Bit-Wert, würde sie nur für die 64-Bit System beachtet.

Das ist jetzt aber nur ein Gedanke von mir - korrigiert mich, wenn ich falsch liege!

jfheins 27. Jan 2010 16:26

Re: Ping & Windows 7
 
1. http://msdn.microsoft.com/en-us/library/b0yt6ck0.aspx

2. Mache für eine neue Frage bitte auch einen neuen Thread auf - das erhöht die Übersichtlichkeit und die Aussagekraft des Titels enorm ;)

Assertor 27. Jan 2010 17:43

Re: Ping & Windows 7
 
Hallo,

Zitat:

Zitat von Bernhard Geyer
Zitat:

Zitat von capo
Okay...und was kann ich nun tun, muss mein Programm dann immmer als Admin ausgeführt werden?

Willst du das wirklich immer den UAC-Dialog zu haben? Nimm lieber ein PING-Komponente die keine Adminrechte benötigt (Wie die von den ICS-Komponenten)

Das ist zwar richtig, aber afaik nutzt ICS die icmp.dll dafür.

Der Grund, warum Indy bisher nicht darauf setzt ist dieser Satz von MS:
http://support.microsoft.com/kb/170591
Zitat:

As noted in the Readme.txt, Icmp.dll may be removed from future versions of Windows.
Gruß Assertor

capo 31. Jan 2010 12:02

Re: Ping & Windows 7
 
Hi DJ-SPM,
danke für dein Tutorial, es funktioniert nun, klasse auch dein Hinweis auf das XP-Manifest.
:hello:

TheMiller 31. Jan 2010 14:11

Re: Ping & Windows 7
 
Gerne - Das freut mich!

In diese Sinne: Happy Coding!


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz