![]() |
Den richtigen Computernamen ändern
Hallo,
ich möchte gerne den richtige Computernamen ändern. Ich weiß das ich mit dem Befehl SetComputerName den NetBios-Namen ändern kann. Aber wie kann ich den richtigen Computernamen, also den unter Arbeitsplatz-->Eigenschaften-->Computernamen ändern ? Ich habe es schon mit SetComputerNameA versucht, aber leider hat das nicht funktioniert. Habt Ihr da vielleicht eine Idee ? |
Re: Den richtigen Computernamen ändern
SetComputerName und SetComputerNameA ist das gleiche.
|
Re: Den richtigen Computernamen ändern
|
Re: Den richtigen Computernamen ändern
Zitat:
|
Re: Den richtigen Computernamen ändern
Zitat:
"FunctionA" und "FunctionW". Unter Delphi wird der Alias "Function" immer auf "FunctionA" abgebildet. In C/C++ wird der Alias "Function" je nach Einstellung von z.B. _UNICODE auf "FunctionW" oder "FunctionA" abgebildet. Sinn dahinter ist es, gleichzeitig Support für Unicode und ANSI zu bieten. Unicode ist in diesem Fall UCS2. |
Re: Den richtigen Computernamen ändern
Und wie wende ich ich jetzt den Befehl SetComputerNameEx im Delphi an ?
|
Re: Den richtigen Computernamen ändern
Zitat:
Delphi-Quellcode:
Const
kernel32 = 'kernel32.dll'; Type COMPUTER_NAME_FORMAT = ( ComputerNameNetBIOS, ComputerNameDnsHostname, ComputerNameDnsDomain, ComputerNameDnsFullyQualified, ComputerNamePhysicalNetBIOS, ComputerNamePhysicalDnsHostname, ComputerNamePhysicalDnsDomain, ComputerNamePhysicalDnsFullyQualified, ComputerNameMax ); Function GetComputerNameEx ( NameType : COMPUTER_NAME_FORMAT; lpBuffer : PChar; Var lpnSize : DWORD ) : BOOL; StdCall; External kernel32 Name 'GetComputerNameExA'; Function SetComputerNameEx ( NameType : COMPUTER_NAME_FORMAT; lpBuffer : PChar ) : BOOL; StdCall; External kernel32 Name 'SetComputerNameExA'; Procedure ??? Begin SetComputerNameEx(ComputerNamePhysicalDnsHostname,'Globi'); end; |
Re: Den richtigen Computernamen ändern
Danke, Basilikum. Dein Codebeispiel funktioniert wunderbar. Ich habe mir das auch zusammen mit dem Ausschnitt aus der MSDN für den Befehl SetComputerNameEx angeschaut. Jetzt bleibt nur noch eine Frage offen. Kann ich das gleiche Verfahren auch auf andere Befehle aus der MSDN anwenden ?
|
Re: Den richtigen Computernamen ändern
Zitat:
![]() |
Re: Den richtigen Computernamen ändern
Zitat:
|
Re: Den richtigen Computernamen ändern
Hi!
Was heißt "streikt"? Gibts Fehlermeldungen? Wie sieht die Procedure wirklich aus? (die ??? gehören da ja eigentlich nicht hin, oder?) Ciao Frederic |
Re: Den richtigen Computernamen ändern
Die Funktion gibt ja TRUE oder FALSE zurück, wenn der Computername gesetzt wurde oder nicht. Die Funktion SetComputerNameEx gibt grundsätzlich TRUE zurück, wenn ich es so schreibe :
Delphi-Quellcode:
Die Funktion gibt FALSE zurück, wenn ich die Funktion so aufrufe :
SetComputerNameEx(ComputerNamePhysicalDnsHostname,'Globi');
Delphi-Quellcode:
Wobei ich glaube, dass bei der zweiten Version sogar der Fehler aufgetreten ist, das PChar nicht mir String kompatibel ist. Es gibt keinerlei Fehlermeldungen, wenn die Funktion ein FALSE zurückgibt.
SetComputerNameEx(ComputerNamePhysicalDnsHostname,PChar(Name));
// oder : SetComputerNameEx(ComputerNamePhysicalDnsHostname,Name); |
Re: Den richtigen Computernamen ändern
Probier mal das:
Zitat:
|
Re: Den richtigen Computernamen ändern
Wie Du ja schon gesehen hast, bin ich absoluter API-Newbie, könntest Du mir das mal bitte Anhand eines Beispiels erklären mit dem GetLastError ?
|
Re: Den richtigen Computernamen ändern
Ist eine Delphi Funktion:
Delphi-Quellcode:
Grüße
Returns the last error reported by an operating system API call.
Unit System Category exception handling routines function GetLastError: Integer; stdcall; Description GetLastError returns the last error reported by an API call into the operating system. Calling this function usually resets the operating system error state. Klaus |
Re: Den richtigen Computernamen ändern
Zitat:
Daß ![]() Zitat:
... übrigens, Rolf, etwas mehr Eigeninitiative können wir wohl von dir erwarten, oder? Kleiner Tip: ich habe lange bevor die DP existierte mit Delphi angefangen, da gab's niemanden der einem irgendwas vorgekaut hat so wie du es willst. Es gilt auch in Foren noch: RTFM - dann fragen. |
Re: Den richtigen Computernamen ändern
Zitat:
Zitat:
So nun aber wieder zum Thema zurrückzukommen. Ich habe mir jetzt mit GetLastError den Fehlercode anzeigen lassen. Zitat:
Delphi-Quellcode:
Ich rufe die Funktion so auf mit einer Variable Seriennummer, die als String deklariert ist, auf :
Function SetComputerNameEx
( NameType : COMPUTER_NAME_FORMAT; lpBuffer : PChar ) : BOOL; StdCall; External kernel32 Name 'SetComputerNameExA';
Delphi-Quellcode:
Der Inhalt der Seriennummer entspricht den Regeln aus der MSDN von dem Befehl SetComputerNameEx. Jetzt kommt der oben angegebene Fehlercode. Wenn ich das ganze so aufrufe :
SetComputerNameEx(ComputerNamePhysicalDnsHostname,PChar(Seriennummer));
Delphi-Quellcode:
Dann führt er mir die Funktion einwandfrei aus. Habe ich da irgendwo einen Denkfehler drin, oder mache ich etwas falsch ?
SetComputerNameEx(ComputerNamePhysicalDnsHostname,'Globi');
|
Re: Den richtigen Computernamen ändern
von welchem Typ ist Seriennummer? und hast du mal debuggt das in Seriennummer auch zu 100% das drin steht was drin stehen soll?
|
Re: Den richtigen Computernamen ändern
In Seriennummer stehen zu 100% Sicherheit nur Buchstaben und Zahlen drin und Seriennummer ist nicht länger als 13 Zeichen. Und die Variable Seriennummer ist vom Typ String.
|
Re: Den richtigen Computernamen ändern
Zitat:
Zitat:
Zitat:
Delphi-Quellcode:
SetComputerNameEx(ComputerNamePhysicalDnsHostname,@Seriennummer[1]);
Zitat:
|
Re: Den richtigen Computernamen ändern
Hallo zusammen,
ich danke allen, die hier mir geholfen haben. Ich habe dann letzte Nacht das Problem gefunden. Ich hatte eine Funktion bekommen, mit der ich die Variable Seriennummer gefüllt habe. Habe ich die Variable dann angewendet um den Inhalt in einem Label oder so anzuzeigen, dann hatt alles wunderbar funktioniert, nur halt bei der Funktion SetComputerNameEx nicht. Grund dafür war, der Inhalt der Variable wurde durch die Funktion mit der folgenden Zeile zurückgegeben :
Delphi-Quellcode:
Habe ich nun das StrPas rausgenommen :wall: , so funktioniert es auch. Das Ergebnis der Funktion ist ja ein AnsiString. Deshalb hat es nicht funktioniert. :wall:
result := StrPas(PChar(serie));
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:20 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