| Autor |
Beitrag |
neo
      
Beiträge: 179
|
Verfasst: 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
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: 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 
      
Beiträge: 179
|
Verfasst: 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
      
Beiträge: 550
Win XP Prof. Mandrake 10.0
D6
|
Verfasst: 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 
      
Beiträge: 179
|
Verfasst: Mo 01.09.03 14:16
Titel: RE:
Geht aber sicher irgendwie.
Immerhin ist das Windows...
|
|
BungeeBug
      
Beiträge: 901
|
Verfasst: 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
|
Verfasst: 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?
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 
      
Beiträge: 179
|
Verfasst: 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
|
Verfasst: 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
      
Beiträge: 4613
Erhaltene Danke: 24
XP home, prof
Delphi 2009 Prof,
|
Verfasst: 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
      
Beiträge: 1905
W98, XP
D7 PE, Lazarus, WinAVR
|
Verfasst: 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
      
Beiträge: 219
Delphi 7
|
Verfasst: 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
      
Beiträge: 66
MS Win 7 Pro, WinXP Pro
D3 Pro, TurboDelhi, Kylix 3 Pro
|
Verfasst: 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 
      
Beiträge: 179
|
Verfasst: 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
      
Beiträge: 25
XP, ME, 98
Delphi 6 PE
|
Verfasst: 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.
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
      
Beiträge: 25
XP, ME, 98
Delphi 6 PE
|
Verfasst: 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:
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
      
Beiträge: 60
|
Verfasst: 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
      
Beiträge: 133
Win XP
D5
|
Verfasst: Fr 26.08.05 16:59
Hi,
Gebt mal in der cmd ein: (2K/XP)
Quelltext
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
|
|
|