Autor Beitrag
neo
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179



BeitragVerfasst: Mo 01.09.03 10:33 
Hallo!

Wie kann ich vom Server eines Netzwerks aus, auf einem Client - Rechner ein Programm öffnen?

Ich brauche diese Funktionen um ein Netzwerk Shutdown/Poweroff Programm zu realisieren.

Danke!
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Mo 01.09.03 10:51 
du musst bei dem PC den du fernsteuern willst einen kleinen server im hintergrund laufen lassen der die befehle entgegen nimmt und ausführt.

dazu würd ich dir die indy kompos empfehlen.

_________________
In the beginning was the word.
And the word was content-type: text/plain.
neo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179



BeitragVerfasst: Mo 01.09.03 11:13 
Titel: RE:
Genau das möchte ich ja vermeiden.

Ich kopiere das Programm vor dem Ausführen auf den PC, und dann starte ich es von meinem PC aus.

Soll ohne Server etc. Programm funktionieren...
Ex0rzist
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 550

Win XP Prof.
Mandrake 10.0

D6
BeitragVerfasst: Mo 01.09.03 13:15 
Ohne Server-Programm funktioniert das nicht.

Wäre ja noch schöner, wenn irgendjemand auf meinem Rechner einfach so format.com etc. ausführen könnte.
neo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179



BeitragVerfasst: Mo 01.09.03 14:16 
Titel: RE:
Geht aber sicher irgendwie.

Immerhin ist das Windows...
BungeeBug
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 901



BeitragVerfasst: Mo 01.09.03 14:48 
Hi,

ich hab ja keine Ahnung was du vor hast aber ich wills auch garnicht erst überlegen :) aber du kannst sicher sein das es keine dafür vorgesehene Funktion gibt. Sicher gibt es irgendwo wieder nen Bug der das möglichmacht aber eine offizielle Funktion dürfte es nicht geben.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.09.03 15:02 
Titel: Re: RE:
neo hat folgendes geschrieben:
Geht aber sicher irgendwie.

Immerhin ist das Windows...

Begreif´s doch endlich: Ohne Gegenstelle, die quasi auf deinen "Anruf" wartet, wird das nichts. Du kannst versuchen, das Programm bspw. über das Netzwerk auf den Zielrechner zu kopieren (Freigabe und Schreibberechtigung vorausgesetzt). Dann such dir die Freigabe in deinem Explorer und starte das Programm ... wo, glaubst du, wird das Programm aktiv werden? :roll:

Mir ist egal, was du vorhast. Wenn es dir darum geht, Sicherheitslücken auszunutzen, dann solltest du dich vielleicht einem Hacker-Kindergarten anschließen. Das DF ist, bei allen Albernheiten (die ich übrigens schätze), ein Forum für ernsthafte Programmierer, die keinen Schaden anrichten wollen.
neo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179



BeitragVerfasst: Mo 01.09.03 16:25 
Titel: RE:
Ich erkläre hier noch mal kurz dass ich kein Hacker Programm machen will.

Ich habe ein Programm welches den lokalen PC herunterfahrt geschrieben. Und das möchte ich auf einen meiner Privat PC`s kopieren, und dort ausführen um den PC abzuschalten.

Das ist die einzige Absicht die ich habe.
Aber ich werds schon irgendwie schaffen, werde dann das Ergebnis veröffentlichen.
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mo 01.09.03 18:03 
Ich habe nicht gesagt, dass du ein Hacker bist oder sein möchtest. Ich habe gesagt:
Zitat:
Wenn es dir darum geht, Sicherheitslücken auszunutzen, dann solltest du dich vielleicht einem Hacker-Kindergarten anschließen.

Und auch wenn du nichts Böses vorhast, kann ich irgendwie dich nicht ernst nehmen, wenn du dein Programm bzw. dessen Funktionalität von Systemlücken abhängig machst. Oder wie soll ich den Ausspruch
neo hat folgendes geschrieben:
Immerhin ist das Windows...

sonst deuten? Spätestens wenn die Lücke geschlossen wird, hat dein Programm ein Problem und funktioniert nicht mehr. :)

Bei NT-Systemen ist die Möglichkeit eines Remote-Shutdown bereits enthalten. Es gibt ein Tool von Assarbad, das diese Funktion (Funktion! keine Sicherheitslücke!) benutzt. Und für 9x benötigst du IMHO nun mal ein Programm, dass auf dem Zielrechner "lauscht" bis du dich verbindest und dann auf deinen Wunsch hin den Rechner herunterfährt. Aber das wurde ja bereits mehrfach erwähnt. Damit sollte die Frage doch beantwortet sein. Oder?
matze
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 4613
Erhaltene Danke: 24

XP home, prof
Delphi 2009 Prof,
BeitragVerfasst: Di 02.09.03 22:23 
Titel: Re: RE:
MathiasSimmack hat folgendes geschrieben:
Wenn es dir darum geht, Sicherheitslücken auszunutzen, dann solltest du dich vielleicht einem Hacker-Kindergarten anschließen.


ja wie muss ich mir denn so nen kindergarten vorstellen ?? geben da mama und papa hacker ihren fillus da ab und die liebe tante kindergrätnerin doziert in der vorschule dann irgendwas über sicherheitslücken ??

(sorry, aber diese albernheit konnte ich mir einfach nicht verkneifen)

und @neo: ich will dich nciht demotivieren aber ich denke nicht, dass du ohne ein serverproggi erfolgt haben wirst !

_________________
In the beginning was the word.
And the word was content-type: text/plain.
digi_c
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 1905

W98, XP
D7 PE, Lazarus, WinAVR
BeitragVerfasst: Mi 03.09.03 08:59 
Also ich schreib grad son Progr. Client+Server, ist aber nur für mich und auf mich abgestimmt.(An dieser Stelle vielen Dank allen die mir bmeine Fragen beantwortet haben)
cromos
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 219


Delphi 7
BeitragVerfasst: Do 04.09.03 11:57 
Titel: Es geht
Also gehen tut das 100 %. Wie genau das geht weiss ich nicht.

Es gibt eine RemoteTool das nennst sich "DameWare NT-Utilitis" dort kann man einen Rechner im Netz angeben (NT/2000/XP), man muss nur das Adminkennwort haben, dann installiert sich der Server dort selbständig und startet sich auch.

Hat mich auch schon immer interessiert wie die das gemacht haben.
oPPi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 66

MS Win 7 Pro, WinXP Pro
D3 Pro, TurboDelhi, Kylix 3 Pro
BeitragVerfasst: Do 04.09.03 12:23 
Dameware NT Utilities ist aber nicht kostenlos die wollen Kohle dafür sehen:

1 Adminlizenz für

NT-Utilties:
289,74 Euro

Remote Control:
137,20 Euro

und ich vermute mal er möchte das kostenlos haben. wenn du auf einen anderen rechner im netzwerk zugreifen willst empfehle ich dir winVNC mit dem kannst du soweit du über adminrechte verfügst per fernwartung alles machen auf der gegenstelle und es ist obendrein noch kostenlos. hab das mit nem bekannten übers internet am laufen. Wenn er online geht übermittelt er mir per eigens dafür gecoodeten tool seine internet-ip und ich kann dann auf seinen rechner zugreifen falls es nötig ist und er meine hilfe braucht ;-)
neo Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 179



BeitragVerfasst: Do 04.09.03 18:17 
Titel: RE:
Danke für den Tipp. Das WinVNc habe ich selber auch im Betrieb.

PS: Das andere Zeugs ist ein bissal zu teuer dafür dass ich nur was programmieren will
SevenValues
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25

XP, ME, 98
Delphi 6 PE
BeitragVerfasst: Do 25.09.03 16:13 
Also zumindest für WinNT/2000/XP user hab ich da was, das keine Sicherheitslücken ausnutzt, sondern nur einen Shutdown and den Client via LAN schickt, ohne daß ein Prog erst auf dem auszuschaltenden Rechner abgelegt werden muß/kann/soll.
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
96:
97:
98:
99:
100:
101:
102:
103:
104:
105:
106:
107:
108:
109:
110:
111:
112:
113:
114:
115:
116:
117:
unit NetworkUser;

interface

uses Windows;

type
   ATStrings = array of string;
   function GetUser(const ServerName: string): string;

implementation

function GetUser(const ServerName: string): string;
const MAX_NAME_STRING = 1024;
var userName,
  domainName: array [0..MAX_NAME_STRING] of Char;
  subKeyName: array [0..MAX_PATH] of Char;
  NIL_HANDLE: Integer ABSOLUTE 0;
  ArryList: ATStrings;
  subKeyNameSize: DWORD;
  index: DWORD;
  userNameSize: DWORD;
  domainNameSize: DWORD;
  lastWriteTime: FILETIME;
  usersKey: HKEY;
  sid: PSID;
  sidType: SID_NAME_USE;
  authority: SID_IDENTIFIER_AUTHORITY;
  subAuthorityCount: BYTE;
  authorityVal: DWORD;
  revision: DWORD;
  subAuthorityVal: ARRAY[0..7] OF DWORD;

  function getvals(s: string): integer;
  var i, j, k, l: integer;
    tmp: string;
  begin
    delete(s, 1, 2);
    j := pos('-', s);
    tmp := copy(s, 1, j - 1);
    val(tmp, revision, k);
    delete(s, 1, j);
    j := pos('-', s);
    tmp := copy(s, 1, j - 1);
    val('$' + tmp, authorityVal, k);
    delete(s, 1, j);
    i := 2;
    s := s + '-';
    for l := 0 to 7 do begin
      j := pos('-', s);
      if j > 0 then begin
        tmp := copy(s, 1, j - 1);
        val(tmp, subAuthorityVal[l], k);
        delete(s, 1, j);
        inc(i);
      end
      else break;
    end;
    result := i;
  end;

begin
  setlength(ArryList, 0);
  revision := 0;
  authorityVal := 0;
  FillChar(subAuthorityVal, SizeOf(subAuthorityVal), #0);
  FillChar(userName, SizeOf(userName), #0);
  FillChar(domainName, SizeOf(domainName), #0);
  FillChar(subKeyName, SizeOf(subKeyName), #0);
  if ServerName <> '' then begin
    usersKey := 0;
    if (RegConnectRegistry(pchar(ServerName), HKEY_USERS, usersKey) <> 0) then
      Exit;
  end
  else begin
    if (RegOpenKey(HKEY_USERS, NIL, usersKey) <> ERROR_SUCCESS) then
      Exit;
  end;
  index := 0;
  subKeyNameSize := SizeOf(subKeyName);
  while (RegEnumKeyEx(usersKey, index, subKeyName, subKeyNameSize, NIL, NIL, NIL,
  @lastWriteTime) = ERROR_SUCCESS) do begin
    if (lstrcmpi(subKeyName, '.default') <> 0) and (Pos('Classes', STRING(subKeyName)) = 0)
    then begin
      subAuthorityCount := getvals(subKeyName);
      if (subAuthorityCount >= 3) then begin
        subAuthorityCount := subAuthorityCount - 2;
        if (subAuthorityCount < 2) then subAuthorityCount := 2;
        authority.Value[5] := PByte(@authorityVal)^;
        authority.Value[4] := PByte(DWORD(@authorityVal) + 1)^;
        authority.Value[3] := PByte(DWORD(@authorityVal) + 2)^;
        authority.Value[2] := PByte(DWORD(@authorityVal) + 3)^;
        authority.Value[1] := 0;
        authority.Value[0] := 0;
        sid := NIL;
        userNameSize := MAX_NAME_STRING;
        domainNameSize := MAX_NAME_STRING;
        if AllocateAndInitializeSid(authority, subAuthorityCount, subAuthorityVal[0],
        subAuthorityVal[1], subAuthorityVal[2], subAuthorityVal[3], subAuthorityVal[4],
        subAuthorityVal[5], subAuthorityVal[6], subAuthorityVal[7], sid) then begin
          if LookupAccountSid(Pchar(ServerName), sid, userName, userNameSize, domainName,
          domainNameSize, sidType) then begin
            setlength(ArryList, length(ArryList) + 1);
            ArryList[length(ArryList) - 1] := string(domainName) + '\' + string(userName);
            result := string(userName);
          end;
        end;
        if Assigned(sid) then FreeSid(sid);
      end;
    end;
    subKeyNameSize := SizeOf(subKeyName);
    Inc(index);
  end;
  RegCloseKey(usersKey);
end;

end.

Ist zwar ne ganze Unit aber die neuralgischen Stellen herauszufiltern war mir zu viel Arbeit im Moment.

Grüße
7

_________________
Nacht ist, wenn einer das Licht ausschaltet.
SevenValues
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 25

XP, ME, 98
Delphi 6 PE
BeitragVerfasst: Do 25.09.03 16:19 
Titel: UUUUUUUUUUUUUUUUUPS
Ups!
Falscher Code! Sorry. Mit dem Code, den ich eben gepostet habe ermittelt man die User im Netzwerk.
Hier der richtige Code:
ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
unit shutdown;

interface

uses
  Windows,
  StdCtrls;

  procedure shut(system, nachricht: string; force, reboot: boolean; countdown: integer);
  procedure abortshut(system: string);

implementation

  const
  SE_SHUTDOWN_NAME = 'SeShutdownPrivilege';
  var
  hdlg: DWORD = 0;

procedure shut(system, nachricht: string; force, reboot: boolean; countdown: integer);
var
  otoken, hToken: THandle;
  tp: TTokenPrivileges;
  h: Dword;
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
  otoken := htoken;
  LookupPrivilegeValue(nil, SE_SHUTDOWN_NAME, tp.Privileges[0].luid);
  tp.privilegecount := 1;
  tp.privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  h := 0;
  AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h);
  InitiateSystemShutdown(PChar(system), pchar(nachricht), countdown, force, reboot);
  tp.privilegecount := 1;
  tp.privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  h := 0;
  AdjustTokenPrivileges(oToken, False, tp, 0, PTokenPrivileges(nil)^, h);
  CloseHandle(hToken);
end;

procedure abortshut(system: string);
var
  hToken: THandle;
  tp: TTokenPrivileges;
  h: Dword;
begin
  OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES, hToken);
  LookupPrivilegeValue(pchar(system), SE_SHUTDOWN_NAME, tp.Privileges[0].luid);
  tp.privilegecount := 1;
  tp.privileges[0].Attributes := SE_PRIVILEGE_ENABLED;
  h := 0;
  AdjustTokenPrivileges(hToken, False, tp, 0, PTokenPrivileges(nil)^, h);
  CloseHandle(hToken);
  abortSystemShutdown(pchar(system));
end;

end.


Grüße
7

_________________
Nacht ist, wenn einer das Licht ausschaltet.
damadmax
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 60



BeitragVerfasst: Mo 29.09.03 16:29 
muss es unbedingt eine funktion sein, oder reicht auch ein externes programm.

da wär unixutils, aintx oder die supporttools von m$ zu empfehlen.

www.weihenstephan.de.../win32/UnxUtils.html
www.dwam.net/docs/aintx/

die supporttools sind unter \SUPPORT\TOOLS auf der w2k cd.


greetz

_________________
Alle Rechtschreibfehler sind gewollt und sollen meine Individualität verstärkt zum Ausdruck bringen.
blaueled
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 133

Win XP
D5
BeitragVerfasst: Fr 26.08.05 16:59 
Hi,

Gebt mal in der cmd ein: (2K/XP)
ausblenden Quelltext
1:
shutdown -i					

Dann siehst du, was das Feature! kann.
Du musst allerdings auf dem anderen rechner einen Account
mit dem Gleichen Namen haben(is ja keine Lücke)

Arne