AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nocheinmal NetJoinDomain

Ein Thema von steppo · begonnen am 13. Okt 2003 · letzter Beitrag vom 17. Dez 2004
Antwort Antwort
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

Nocheinmal NetJoinDomain

  Alt 13. Okt 2003, 20:21
Hi leute,

in der Funktion NetJoinDomain gibt es einen Paramater Namens "FJoinOptions".

gehe ich da richtig in der Annahme, dass es sich um Konstanten handelt?

Habe ich diese Konstanten richtig definiert und zugeordnet?

Die Funktion selber:
Delphi-Quellcode:
function NetJoinDomain(const lpServer: PWChar; const lpDomain:
  PWChar; const lpAccountOU: PWChar; const lpAccount: PWChar; const lpPassword:
  PWChar; const fJoinOptions: DWord): NET_API_STATUS; stdcall; external
'netapi32.dll';
und meine Konstantendefinition:

Delphi-Quellcode:
const
  NETSETUP_JOIN_DOMAIN = 0;
  NETSETUP_ACCT_CREATE = 1;
  NETSETUP_WIN9X_UPGRADE = 2;
  NETSETUP_DOMAIN_JOIN_IF_JOINED = 3;
  NETSETUP_JOIN_UNSECURE = 4;
  NETSETUP_MACHINE_PWD_PASSED = 5;
Hier noch die Beschreibung der einzelnen Konstanten.

fJoinOptions
[in] Specifies a value that contains a set of bit flags defining the join options. This parameter can be one or more of the following values. Value Meaning

NETSETUP_JOIN_DOMAIN Joins the computer to a domain. If this value is not specified, joins the computer to a workgroup.

NETSETUP_ACCT_CREATE Creates the account on the domain.

NETSETUP_WIN9X_UPGRADE The join operation is occurring as part of an upgrade of Windows Me/98/95.

NETSETUP_DOMAIN_JOIN_IF_JOINED Allows a join to a new domain even if the computer is already joined to a domain.

NETSETUP_JOIN_UNSECURE Performs an unsecured join.

NETSETUP_MACHINE_PWD_PASSED Indicates that the lpPassword parameter specifies a local machine account password rather than a user password. This flag is valid only for unsecured joins, which you must indicate by also setting the NETSETUP_JOIN_UNSECURE flag.
If you set this flag, then after the join operation succeeds, the machine password will be set to the value of lpPassword, if that value is a valid machine password.

Die weiter Frage
Kann ich diesen Konstanten einfach die Werte von = 0 bis 5 zuweisen und zwar in der Reihenfolge, wie sie in der Hilfe beschrieben sind?
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Nocheinmal NetJoinDomain

  Alt 13. Okt 2003, 21:22
Moin Steppo,

die genannten Konstanten haben die Werte:

Delphi-Quellcode:
NETSETUP_JOIN_DOMAIN = $00000001;
NETSETUP_ACCT_CREATE = $00000002;
NETSETUP_WIN9X_UPGRADE = $00000010;
NETSETUP_DOMAIN_JOIN_IF_JOINED = $00000020;
NETSETUP_JOIN_UNSECURE = $00000040;
NETSETUP_MACHINE_PWD_PASSED = $00000080;
Das ein einfaches durchnummerieren nicht gehen kann kannst Du schon dem Kommentar zum Parameter entnehmen.
Zum einen handelt es sich um Bitflags, zum anderen kann man mehrere kombinieren.
Gerade letzteres wäre aber bei durchnummerierten nicht möglich.

Beispiel, mit Deiner Aufteilung:

NETSETUP_ACCT_CREATE or NETSETUP_WIN9X_UPGRADE = 3 = NETSETUP_DOMAIN_JOIN_IF_JOINED

Fast immer, wenn Du die Beschreibung solcher Konstanten findest wird je Konstante nur ein Bit gesetzt sein, zumindest aber keine Überschneidung zwischen den Bits vorliegen, ausser es handelt sich um Konstanten, die selber schon eine häufige Kombination als eine Konstante zusammenfassen.

Du solltest Dir mal das PSDK herunterladen (hatte ich glaub' ich letztens schon vorgeschlagen ).
Darin sind dann auch, bei entsprechendem Umfang des Downloads, auch die Headerdateien enthalten, denen Du solche Konstanten entnehmen kannst (in diesem Falle die LMJOIN.H)
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

Re: Nocheinmal NetJoinDomain

  Alt 13. Okt 2003, 21:33
Hi Cristian,
habe mal ein wenig in C++(auf deinen Vorschlag hin) gestöbert.
Da habe ich auch endlich die Beschreibung der Konstanten gefunden, danke.

Die PSDK habe ich schon runtergeladen, aber ich muß mich noch darin zurechtfinden.
Danke für deine Mühe.

mfg
steppo

p.s.:
Du hast recht, durch die Möglichkeit die Parameter zu addieren, fällt das durchnummerieren flach.
Ich werde es beherzigen:
erst denken, dann handeln (fragen).
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Nocheinmal NetJoinDomain

  Alt 13. Okt 2003, 21:41
Moin Steppo,

das ist alles Gewöhnung.
Mit der Zeit hast Du im "Gefühl" was Du wo findest.
Deklarationen z.B. meist in den Headern.

Zitat:
...durch die Möglichkeit die Parameter zu addieren...
Bloss nicht addieren. Immer mit OR verknüpfen.
Wenn Du z.B. eine Kombikonstante nimmst, dann noch eine, die schon in dieser enthalten ist und diese addierst, erhälst Du mit Sicherheit einen völlig falschen Wert.
Verknüpfst Du mit OR kann das nicht passieren.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

Re: Nocheinmal NetJoinDomain

  Alt 14. Okt 2003, 17:10
Vielen Dank christian.
Habe das wohl falsch verstanden!
Hatte auch noch einige andere Fehler.
z.B. Das keine vertrauensstellung vorhanden sei.
oder
zu wenig informationen enthalten sind.

habe das Problem aber in den Griff bekommen.
Vielen Dank für deine Hilfe.

Ich verstehe das ganze jedoch immer noch nicht ganz.
Wenn ich "or" sage, gebe ich doch zwei Möglichkeiten zur auswahl.
Es sollen aber doch beide ausgeführt werden!
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Nocheinmal NetJoinDomain

  Alt 14. Okt 2003, 17:47
Moin Steppo,

nein, mit OR werden die Werte binär verknüpft, bei + addiert.

z.B.
Angenommen, Du hast 4 Konstanten. Drei mit Einzelwerten, die kombiniert werden dürfen, und eine, die die ersten beiden Konstanten schon kombiniert, da diese häufig zusammen verwendet werden.
K1 = 1
K2 = 2
K3 = 4
K4 = 3 (Kombinationskonstante)

Jetzt nimmst Du, versehentlich K1, K2 und K4.
Du willst K1 und K2 Kombinieren, hast aber nicht bedacht, oder weisst es nicht, dass K4 das schon erledigen würde

Bei OR wird der Funktion dann der Wert

1 OR 2 OR 3 = 3 übergeben. Alles gut.

Bei + wird dann aber

1 + 2 + 3 = 6 übergeben. Das entspräche dann K2 OR K3. Was auch immer das bedeutet, es war nicht beabsichtigt.

Eine Funktion kann eine so übergebene Funktion dann so auswerten (und wird es auch so oder ähnlich tun):

Delphi-Quellcode:
if (Flags and K1) = K1 then // Berücksichtige Einstellung K1
if (Flags and K2) = K2 then // Berücksichtige Einstellung K2
// usw.
Es werden also beide übergebenen Möglichkeiten erkannt.
Bei einer Addition wäre das nicht gezielt zu zerlegen.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
steppo

Registriert seit: 31. Dez 2002
235 Beiträge
 
Delphi 10 Seattle Enterprise
 
#7

Re: Nocheinmal NetJoinDomain

  Alt 14. Okt 2003, 22:19
hi Christian,
danke für die erklärung.
steppo
Wir sind heute die, vor denen uns unsere Eltern immer gewarnt haben!
  Mit Zitat antworten Zitat
CodeX

Registriert seit: 30. Okt 2004
471 Beiträge
 
Delphi 12 Athens
 
#8

Re: Nocheinmal NetJoinDomain

  Alt 17. Dez 2004, 19:28
ich bin auch gerade dabei eine möglichkeit zu finden, die workgroup/domain am lokalen rechner zu ändern.

Delphi-Quellcode:
function NetJoinDomain(const lpServer: PWChar; const lpDomain:
  PWChar; const lpAccountOU: PWChar; const lpAccount: PWChar; const lpPassword:
  PWChar; const fJoinOptions: DWord): NET_API_STATUS; stdcall; external
'netapi32.dll';
ich habe es mit oben beschriebener funktion versucht. NET_API_STATUS wird als nicht deklariert angegeben.
habe es mal spaßeshalber durch String ersetzt.

siehe da es lässt sich komplilieren. und beim aurufen mit
domainmsg := NetJoinDomain('test',nil,nil,nil,nil,NETSETUP_DOMAIN_JOIN_IF_JOINED); wird die workgroup auch tatsächlich in 'test' umgeändert. aber leider kommt eine zugriffsverletzung gleich darauf und domainmsg ist immer noch leer.
Code:
access violation at 0012f7c4: write of address 0xf95be744
für was steht denn dieses NET_API_STATUS und wie komm ich da dran?

EDIT
auweia. die fehlermeldung ist ja ein fehlercode. also integer. NET_API_STATUS durch integer ersetzt und schon gehts
domainmsg ist nach dem setzen '0' also keine fehlermeldung.

zwei fragen bleiben dann trotzdem noch:
1. was ist NET_API_STATUS und warum ist das sinnvoller als einfach nur 'Integer'?
2. wie komme ich an die fehlercodes von folgenden meldungen ran?
Code:
ERROR_INVALID_PARAMETER A parameter is incorrect.
ERROR_NO_SUCH_DOMAIN The specified domain did not exist.
NERR_SetupAlreadyJoined The computer is already joined to a domain.
NERR_InvalidWorkgroupName The specified workgroup name is not valid.
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#9

Re: Nocheinmal NetJoinDomain

  Alt 17. Dez 2004, 23:48
Moin CodeX,

die Deklarationen kannst Du in den Header Dateien des PSDK finden (Download bei MS, in vollem Umfang ca. 350MB)


Delphi-Quellcode:
const
  // aus LMErr.h
  NERR_BASE = 2100;
  NERR_SetupAlreadyJoined = (NERR_BASE+591);
  NERR_InvalidWorkgroupName = (NERR_BASE+595);

  // aus WinError.h
  ERROR_NO_SUCH_DOMAIN = 1355;
  ERROR_INVALID_PARAMETER = 87;

type
  // aus LMCons.h
  NET_API_STATUS = DWORD;
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz