ertan-30
Goto Top

Variable USERPROFILE wird nicht beim Aufruf über eine BAT-Datei in einer REG-Datei ersetzt !

Variable USERPROFILE wird nicht beim Aufruf über eine BAT-Datei in einer REG-Datei ersetzt !

Hallo zusammen,
ich habe folgende Aufgabenstellung :

Die Anwender sollen sich beim erstmaligen Anmelden an einem Rechner eine BAT-Datei ausführen, die bestimmte Konfigurationen
an einem Programm durchführt, ausführen. In der BAT-Datei werden Kopieraktionen gemacht und Registry-Einträge eingefügt bzw. ersetzt. Soweit funktioniert die ganze Sache.


Ich habe nun folgendes Problem :

In der BAT-Datei habe ich folgenden Aufruf:
....
copy \\server\...\...\LT2005_Erstmaliges_Starten.reg c:\temp\LT2005_Erstmaliges_Starten.reg
regedit c:\temp\LT2005_Erstmaliges_Starten.reg
del c:\temp\LT2005_Erstmaliges_Starten.reg
...

In der Datei LT2005_Erstmaliges_Starten.reg habe ich eine ganze Menge Einträge, die die Variable %USERPROFILE% enthalten.
Diese werden nun über die BAT-Datei als dummer Text eingefügt, und nicht durch den Wert der Variable ersetzt.

Beispiel aus der REG-Datei :
...
[HKEY_CURRENT_USER\Software\Autodesk\AutoCAD LT\R10\ACLT-301:407]
@=""
"AutoMigrate"=dword:00000002
"LaunchNFW"=dword:00000003
"LocalRootFolder"="%USERPROFILE%\\Lokale Einstellungen\\Anwendungsdaten\\Autodesk\\AutoCAD LT 2005\\R10\\deu\\"
"NFWFile"="%ProgramFilesDir%\\Autodesk\\AutoCAD LT 2005\\Help\\aclt_NFW.CHM"
"RoamableRootFolder"="%USERPROFILE%\\Anwendungsdaten\\Autodesk\\AutoCAD LT 2005\\R10\\deu\\"
...

Es wäre nun ein Riesenaufwand, alle Registry-Einträge in die BAT-Datei über den Befehl RegAdd neu anzulegen, nur damit die Variable %USERPROFILE% ersetzt wird.

Beim Starten von AutoCad LT2005 kommt nun eine Fehlermeldung mit "ungültiger Pfad bzw. Dateiname...".
Wenn ich die Reg-Datei manuell ändere und meinen Account eintrage, kommt AutoCad ohne Fehlermeldungen hoch.


Ich kann aber vorher nicht wissen, welcher Anwender diese BAT-Konfigurationsdatei benutzt und was festes in die REG-Datei eintragen.


Wer hat zu diesem Problem einen Workaround ??
Am Besten einen einfachen Workaround mit DOS-Befehlen, z.B. durch ersetzen des dummen Strings %USERPROFILE% in der REG-Datei mit "C:\Dokumente und Einstellungen\Username" ??
Zum Zeitpunkt der Ausführung der BAT-Datei ist ja der Username bereits bekannt.

Oder gibt es sonstige Tools, mit deren Hilfe ich , ohne die komplette REG-Datei überarbeiten zu müssen, ans Ziel gelangen kann ?

Ich bin leider kein besonderer DOS-Crack !!
Vielen Dank schonmal im voraus.

Mfg
Ertan Öncel

Content-Key: 15995

Url: https://administrator.de/contentid/15995

Printed on: April 19, 2024 at 12:04 o'clock

Member: Biber
Biber Sep 13, 2005 at 15:36:01 (UTC)
Goto Top
Moin, Ertan,
IMHO ist das schon ganz richtig, das die Variable %USERPROFILE% NICHT aufgelöst wird.
Da ist irgendwas anderes in die Grütze gegangen.
Wie geht denn die Fehlermeldung "Pfad nicht gefunden ..." weiter??

AUF GAR KEINEN FALL jetzt da irgendwelche Variablen "von Hand" auflösen.

Ist denn die Variable %USERPROFILE% beim User (nicht bei der Inst) korrekt gesetzt?

Gruß
Biber
Member: Ertan-30
Ertan-30 Sep 15, 2005 at 06:37:36 (UTC)
Goto Top
Guten Morgen,
also erstmal möchte ich sagen, dass das Auflösen der Variablen von "von Hand" nur ein Test war, um zu sehen, ob die Fehlermeldung dann nicht mehr kommt. Und wie durch ein "Wunder", AutoCad startet dann ohne Fehlermeldungen face-smile

Also die Fehlermeldung beim Starten von AutoCad LT2005 lautet:
SYSTEMFEHLER: Ungültiger Pfad/Dateiname für Konfiguration: %USERPROFILE%Lokale Einstellungen\Anwendungsdaten\Autodesk\AutoCAD LT2005\R10\deu

Es ist ja auch logisch, dass die Fehlermeldung kommt.
AutoCad LT2005 kopiert beim erstmaligen Starten bei einem neuen User ca. 200 Dateien in den jeweiligen Userprofil. Die Registry-Einträge müssen ja dann auch auf den jeweiligen Userprofil verweisen.
Wenn dann dort ein "Schmarrn" wie %USERPROFILE" drinsteht, bekommt AutoCad LT2005 geringfügig Probleme face-smile

-> die Variable %USERPROFILE% ist bei der Inst beim User schon korrekt gesetzt.

Die Kopieraktionen in den Userprofil bekomme ich in der BATCH-DAtei auch ohne Probleme hin, da im BATCH-Modus die Variable ja aufgelöst wird.
Nur die Registry-Einträge , die ich durch den REGEDIT-Befehl einfügen will, können in der REG-Datei nicht aufgelöst werden !

Mr.Biber, was heisst bei Dir die Abkürzung IMHO ??


Wir haben nun die Idee, die REG-Datei während des BATCH-Modus zu editieren, d.h. durch einfachen DOS-Befehlen bzw. ein selbst gestrickten bzw. gekauften Progrämmchen die Variable zu ersetzen, und anschliessend als eine neue REG-Datei abzuspeichern und anschliessend in der BAT-Datei einzutragen.

Wer kennt Programme, am Besten Freeware, die durch einen Aufruf in der Kommandozeile Strings einer Datei ersetzen können und dabei Variablen auslesen und der Datei übergeben können ?

Ich bin auch anderen Ideen aufgeschlossen face-smile

Mfg
Ertan
Member: Biber
Biber Sep 15, 2005 at 06:56:56 (UTC)
Goto Top
Moin Ertan,
na, wenn Du auch anderen Ideen aufgeschlossen bist, melde ich mich nochmal.

1. IMHO=In my humble opinion=meiner unmaßgeblichen Meinung nach
2. Das IMHO gilt auch immer noch face-wink
3.>SYSTEMFEHLER: Ungültiger Pfad/Dateiname für Konfiguration:
%USERPROFILE%Lokale Einstellungen\Anwendungsdaten\Autodesk\AutoCAD LT2005\R10\deu

Hat er doch recht. %USERPROFILE% hat NIE einen abschließenden Backsslash und zweitens steht es nicht in Anführungszeichen trotz Leerzeichen im Pfadnamen.

Richtiger:
"%USERPROFILE%\Lokale Einstellungen\Anwendungsdaten\Autodesk\AutoCAD LT2005\R10\deu"
oder
%USERPROFILE%\Lokale~1\Anwend~1\Autodesk\AutoCA~1\R10\deu

IMHO zumindest.

MfG Biber

P.S. MfG = Mit feixendem Grinsen
Member: Ertan-30
Ertan-30 Sep 15, 2005 at 07:09:28 (UTC)
Goto Top
Hallo Biber,
vielen Dank für deine promte Antwort !!

Ich will nochmal darauf hinweisen, dass in der REGISTRY nicht %USERPROFILE% stehen darf.
Das Problem hat nichts mit der falschen Schreibweise , d.h. mit oder ohne Anführungszeichen oder Lerrzeichen zu tun.

Wenn ich nun Testweise %Userprofile%\... durch C:\Dokumente und Einstellungen\llioee0\...
ersetze, funktioniert alles einwandfrei (llioee0 ist mein Benutzername).

Ich kann aber vorab nichts in die REG-Datei was sinnvolles eintragen, da diese Einträge bekanntlich für den aktuell angemeldeten Benutzer gemacht werden müssen.

Die Lösung des Problems liegt also darin, dass ich die Reg-Datei editieren muss und dazu ein geeignetes Tool bzw. eine Anleitung benötige, wie man das mit einfachen Befehlsaufrufen machen kann.

Ich bin wie gesagt leider nicht der große DOS-Crack, d.h. mir sind keine DOS-Befehle bekannt, mit denen ich einen String in einer Datei editieren kann, wo auch noch eine Variable übergeben wird.

Daher schauen wir uns auch nach diversen PRogrämmchen um, die das vielleicht können.

Mit feixendem Grinsen face-smile
Ertan
Member: Biber
Biber Sep 15, 2005 at 07:54:01 (UTC)
Goto Top
>Ich will nochmal darauf hinweisen, dass in der REGISTRY nicht %USERPROFILE% stehen darf.

WARUM????
Schau doch bitte mal, wie z.B. die %TEMP%-Variable in der Registry gesetzt ist.
Oder such in der Registry nach dem Wert %USERPROFILE%... gibt es reichlich und funktionierend.

Wette eine halbe Flasche Becks, dass das Problem woanders liegt.

Aber ich lass auch gern andere Meinungen gelten - bin jetzt still und lese erstmal nur mit, was für Alternativlösungen gepostet werden.

LG (=Liebe Grüße)
Frank / der Biber aus Bremen
Member: Ertan-30
Ertan-30 Sep 15, 2005 at 08:08:02 (UTC)
Goto Top
Hallo nochmal,
nochmals danke für deine schnelle Antwort.

Du hast Recht, dass die TEMP-Variable in der Registry so gesetzt ist.

Ich kann aber nur sagen, dass es eben bei AutoCad LT2005 nicht funktioniert.

Ich bin da ein vorsichtiger Mensch und will die Einträge über die BATCH-Datei genauso einfügen, wie sie von unserem Installationsprogramm "NetInstall" gesetzt werden, bzw.
beim normalen Installieren von CD gesetzt werden.

Wie gesagt, ohne Variable funktioniert es ja.

Danke trotzdem für deine Mühe !!

Ein Kollege von unserer "Programmiertruppe" strickt mir heute oder morgen ein kleines Programm, welches diese Variable dann ersetzt. Vielleicht ist das Problem dann bald erledigt.

Warten wir mal ab, ob weitere Einträge gepostet werden.


Nur zur Info: Wir haben in unserem Zweig-Werk in FN keinen "Net-Install-Server", wo wir die Installation über Netinstall eben nicht durchführen können. Daher die ganze Aktion mit der "blöden" BAT-Datei.

Mfg
Ertan
Member: Biber
Biber Sep 19, 2005 at 10:10:08 (UTC)
Goto Top
Moin, Ertan,
falls Dein Kollege von der Programmiertruppe Unterstützung braucht, sag Bescheid.
Habe auch noch mal über das Problemchen meditiert und weiß jetzt, wie es geht (denke ich).

Biber
Member: thafrog
thafrog Oct 13, 2005 at 07:17:01 (UTC)
Goto Top
Hallo Ertan,
ich hatte ein ähnliches Problem. Verbindliche servergespeicherte Benutzerprofile. Dazu wurde die Software auf den Clients installiert und getestet, ob die Software fkz.. Danach das lokale Benutzerprofil aus der Systemsteuerung heraus in das freigegebene Vz. für den verbindlichen Profilpfad kopiert. Nebst sämtlicher Reg-Daten für AutoCAD. Und das ist der falsche Weg.

Das mit der Anlage und Kopie des verbindlichen Benutzerprofils ist soweit ok. AutoCAD darf jedoch nicht vorher installiert worden sein. D.h. es dürfen sich keinerlei Reg-Daten im Profil befinden, die auf die AutoCAD-Installation verweisen, denn AutoCAD schreibt ja so gerne absolute Pfade. Was prima fkz. hat ist der Weg über die Benutzung der AutoCAD-Installations-CD:

Netzwerkeinrichtung > Schneller Einstieg für Netzwerkadministratoren > Verwenden von Gruppenrichtlinien zur Installlation einer Einrichtung

Dabei wird nach Computertstart (ich würde vorher sämtliche GPOs, die sich auf Computerkonfigurationen beziehen entfernen) AutoCAD unter der Anmeldung eines normalen (Test) Domänenbenutzer installiert und kann anschließend von ALLEN Domänenbenutzer be-/genutzt werden (GPO notfalls nach der Anmeldung mit gpupdate /force erzwingen). Nachdem auf allen Rechnern per Test-Domänenbenutzer AutoCAD installiert wurde, wurde diese GPO (Computerkonfiguration) wieder entfernt (die Verknüpfung für die Clients) und alle anderen GPOs wieder auf die Maschinen gezogen. Fertig.

Hoffe das hilft oder hast Du schon eine andere Lösung?

gruß
r.