Wo nimmt TC die Default-Buttonbar her?

German support forum

Moderators: Hacker, Stefan2, white

Post Reply
User avatar
dy/dx
Junior Member
Junior Member
Posts: 92
Joined: 2005-03-06, 22:32 UTC
Contact:

Wo nimmt TC die Default-Buttonbar her?

Post by *dy/dx »

Hi,

Ich hoffe es nicht wieder ueberlesen zu haben - aber ich finde es nicht.

Wie genau bestimmt TC die Datei fuer die default Buttonbar?

Als user "user" hab ich die Buttonbar in %APPDATA%/Ghisler/default.bar

Ich habe diese Einstellung aber nie getroffen, TC "findet sie einfach". Auch in der Registry und wincmd.ini ist nix.

Starte ich den TC aber als anderer (admin-) User und setze die Profilvariablen entsprechend,

Code: Select all

set USERPROFILE=C:\Users\user
set APPDATA=C:\Users\user\AppData\Roaming
"C:\Program Files\totalcmd\TOTALCMD64.EXE"
laedt TC die default.bar von c:\Program Files\totalcmd.
Ich muss aber betonen, dass die wincmd.ini sehr wohl von C:\Users\user\AppData\Roaming\Ghisler\wincmd.ini geladen wird und damit alle Einstellungen. Ausser die Buttonbar ...

Danke nochmals.
User avatar
Stiltzkin
Member
Member
Posts: 194
Joined: 2004-09-10, 17:15 UTC

Post by *Stiltzkin »

die buttonbar lässt sich über die wincmd.ini selbst bestimmen:

z.B.:

Code: Select all

[Buttonbar]
Buttonbar=d:\Totalcmd\Settings\Buttonbars\meine.bar
oder

Code: Select all

[Buttonbar]
Buttonbar=%COMMANDER_PATH%\Settings\Buttonbars\meine.bar

wenn man nicht möchte das der totalcmd in der registry oder in appdata seine einstellungen speichert, kann man die windcmd.ini auch in den order zur totalcmd.exe legen und folgenden eintrag hinzufügen:

Code: Select all

[Configuration]
UseIniInProgramDir=7

aus der hilfe:
UseIniInProgramDir=0
Diese Variable wird nur gelesen, wenn sie sich in der Datei wincmd.ini im selben Verzeichnis wie das Programm befindet.
Sie ist die Summe der folgenden Werte:
1: Benutze wincmd.ini im Programmverzeichnis, falls kein anderer Ort über Registry oder Kommandozeilenparameter festgelegt wurde
2: Benutze wcx_ftp.ini im Programmverzeichnis (sonst wie 1)
4: Übergehe Einstellungen in der Registry
User avatar
dy/dx
Junior Member
Junior Member
Posts: 92
Joined: 2005-03-06, 22:32 UTC
Contact:

Post by *dy/dx »

Jetzt laedt der sie als admin auch - danke!

Trotzdem wuerde mich interessieren wieso der TC die defaultbar aus dem Programmverzeichnis laedt obwohl ich %APPDATA% bzw. %USERPROFILE% umgesetzt habe. Und als user "user" nimmt er automatisch die default.bar aus %APPDATA%\Ghisler obwohl es nicht in der wincmd.ini oder sonstwo steht.

Das einzige was als admin in der Registry steht ist HKCU\Software\Ghisler\FtpIniName=%APPDATA%\GHISLER\wcx_ftp.ini, iniFileName=%APPDATA%\GHISLER\wincmd.ini und InstallDir=C:\Program Files\totalcmd.

Under HKLM steht genau das gleiche und als "user" existiert HKCU\Software\Ghisler gar nicht.
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, dy/dx.

Wenn du beim Installieren die Fragen des Setup Programmes genau liest, kannst du auf die Antwort (fast schon) selbst kommen.
Ansonsten steht sie z.B. hier: Ini-Settings Location

Grüße,
Karl
MX Linux 21.3 64-bit xfce, Total Commander 11.50 64-bit
The people of Alderaan keep on bravely fighting back the clone warriors sent out by the unscrupulous Sith Lord Palpatine.
The Prophet's Song
User avatar
dy/dx
Junior Member
Junior Member
Posts: 92
Joined: 2005-03-06, 22:32 UTC
Contact:

Post by *dy/dx »

Ich versteh's noch immer nicht ...
Nein. Das betrifft ja nur die Konfiguration! Mit der ini Datei passt ja alles. Aber nicht mit der Buttonbar!

Und selbst wenn das stimmen wuerde: Ich habe doch %APPDATA% und %USERPROFILE% fuer "admin" und "user" aufs gleiche Verzeichnis gesetzt. Wieso "findet" er dann als "user" die Buttonbar aber als "admin" nicht? Aber die ini Datei schon?
User avatar
ghisler(Author)
Site Admin
Site Admin
Posts: 50567
Joined: 2003-02-04, 09:46 UTC
Location: Switzerland
Contact:

Post by *ghisler(Author) »

Wenn Sie den TC in ein Verzeichnis wie unter "Program files" installieren, wo Sie keine Schreibrechte haben, und dann die Buttonbar ändern und speichern, dann schreibt TC das automatisch nach
%APPDATA%/Ghisler/default.bar
weil er unter Program files nicht schreiben kann. Er nimmt dann auch automatisch diese Datei beim nächsten Start.
Author of Total Commander
https://www.ghisler.com
User avatar
dy/dx
Junior Member
Junior Member
Posts: 92
Joined: 2005-03-06, 22:32 UTC
Contact:

Post by *dy/dx »

Ich glaube es ist noch immer nicht klar. Er nimmt eben *nicht* %APPDATA%\Ghisler\default.bar obwohl er m.M. sollte.

Nochmal das Setup:
* Total Commander ist in c:\Program Files\totalcmd installiert und so, dass die config user spezifisch unter %APPDATA% liegt
* Benutzer "user" hat wincmd.ini, default.bar etc in c:\users\user\AppData\Roaming\Ghisler liegen
* Benutzer "admin" hat ebenfalls default.bar und wincmd.ini in c:\users\root\AppData\Roaming\Ghisler liegen, aber das sollte nichts zur Sache tun (siehe unten).

Nun starte ich TC als "user" und alles geht.
Nun starte ich TC als "admin" - ebenfalls alles wie erwartet.

Nun oeffne ich als "admin" eine cmd und gib folgendes ein:

Code: Select all

set APPDATA=c:\users\[color=red]user[/color]\AppData\Roaming
"c:\program files\totalcmd\totalcmd64.exe"
Das Programm sollte nun als admin gestartet werden aber die den Einstellungen von Benutzer.

Das ist nun der Fall - totalcmd ist als admin gestarted, laedt aber c:\users\user\AppData\Roaming\Ghisler\wincmd.ini etc.

Er laedt aber die Buttonbar c:\program files\totalcmd\default.bar und nicht wie erwartet c:\users\user\AppData\Roaming\Ghisler\default.bar.

Wieso?

[/list]
Tiggaa
Member
Member
Posts: 151
Joined: 2007-06-15, 21:27 UTC

Post by *Tiggaa »

Wer hat denn sozusagen den TC installiert ? admin oder user ? Oder - wie ich vermute - gab es womöglich beides und beide male in denselben Installationsordner ?
User avatar
dy/dx
Junior Member
Junior Member
Posts: 92
Joined: 2005-03-06, 22:32 UTC
Contact:

Post by *dy/dx »

Wer hat denn sozusagen den TC installiert? admin oder user ?
Ich ;-)
Installiert als "admin" (als "user" hab ich keine Schreibrechte auf c:\Program Files).
Oder - wie ich vermute - gab es womöglich beides und beide male in denselben Installationsordner ?
Nein. Installiert nur als admin.

Ich bezweifle wie gesagt dass sich folgender code in TC findet:

Code: Select all

if(file_exists("%APPDATA%\GHISLER\default.bar"))
  LoadButtonbar("%APPDATA%\GHISLER\default.bar");
else
  installDir = GetInstallDir(); // c:\Program Files\totalcmd oder whatever ...
  LoadButtonbar(installDir);
denn %APPDATA% ist trotz admin auf c:\users\user\AppData gesetzt!

Probier einfach das obige command snippet aus, ich glaube du bekommst dasselbe Resultat!
User avatar
karlchen
Power Member
Power Member
Posts: 4605
Joined: 2003-02-06, 22:23 UTC
Location: Germany

Post by *karlchen »

Hallo, dy/dx.

Habe noch mal drüber nachgedacht, vor allem über dein Startscript:

Code: Select all

set USERPROFILE=C:\Users\user
set APPDATA=C:\Users\user\AppData\Roaming
"C:\Program Files\totalcmd\TOTALCMD64.EXE" 
und mögliche Nebenwirkungen und unerwartete Verhaltensweisen.

Start als normaler Benutzer "user":
Die Variable APPDATA und USERPROFILE existierten schon, bevor das Script sie neu exportiert für sich und die vom Script gestarteten Kindprozesses, mit dem gleichen Inhalt.
Die Variablen USERPROFILE und APPDATA werden von Windows beim Login aus der Registry ermittelt und gesetzt.
Das Script bestätigt, was ohnehin gilt.
Total Commander holt sich seine INI-Dateien aus %APPDATA%\Ghisler. Das täte er auch ohne den Vorspann im Startscript.
Total Commander holt sich die Default.bar ebenfalls aus %APPDATA%\Ghisler aus dem Grund, den Christian Ghisler erklärt hat.

Start als administrativer Benutzer "admin":
Für den Benutzer admin gilt nach dem Windows Login:
USERPROFILE=C:\User\Admin
APPDATA=C:\User\Admin\Appdata\Roaming
Das Startscript verbiegt das jetzt vor dem Start des T.C. auf
USERPROFILE=C:\Users\user
APPDATA=C:\Users\user\AppData\Roaming
Ab hier hast du nun einen Widerspruch für USERPROFILE und APPDATA, je nachdem ob ein Programm diese aus der Registry ermittelt oder aus dem eigenen Environment.

Total Commander holt sich seine INI-Dateien aus dem verbogenene %APPDATA%\Ghisler, also aus C:\Users\user\AppData\Roaming

Der Admin hat jedoch die Berechtigung eine Default.bar mit der zugehörigen Cachedatei Default.br2 im Total Commander Programmpfad zu lesen und zu schreiben. Darum holt er sich die Default.bar genau daher.

In der wincmd.ini steht im Abschnitt [Buttonbar] entweder gar nichts oder einfach:

Code: Select all

[Buttonbar]
Buttonbar=Default.bar
Und eine fehlende Pfadangabe interpretiert T.C. im ersten Anlauf so, dass die Datei im Programmordner zu suchen ist.

Das Code-Snipplet hier auszuführen auf meinem Rechner, dürfte nicht so aussagekräftig sein:

Code: Select all

$ lsb_release -d; wine --version
Description:	Linux Mint 13 Maya
wine-1.4
Grüße,
Karl
MX Linux 21.3 64-bit xfce, Total Commander 11.50 64-bit
The people of Alderaan keep on bravely fighting back the clone warriors sent out by the unscrupulous Sith Lord Palpatine.
The Prophet's Song
User avatar
dy/dx
Junior Member
Junior Member
Posts: 92
Joined: 2005-03-06, 22:32 UTC
Contact:

Post by *dy/dx »

Danke - du haettest es fast gelueftet, wenn nicht ... siehe unten.
Total Commander holt sich seine INI-Dateien aus %APPDATA%\Ghisler. Das täte er auch ohne den Vorspann im Startscript.
nein; Ohne den Vorspann wuerde er sie von
c:\users\admin\appdata\roaming\ghisler holen.
Mit Vorspann von
c:\users\user\appdata\roaming\ghisler holen.
Weil eben %APPDATA% und %USERPROFILE% ueberschrieben werden!
Ab hier hast du nun einen Widerspruch für USERPROFILE und APPDATA, je nachdem ob ein Programm diese aus der Registry ermittelt oder aus dem eigenen Environment.
Denke ich nicht. %APPDATA% ist eine Environment-Variable. Die darf nicht "ermittelt" werden, die ist gesetzt! Sonst wuerden ENV-Variablen nichtmal Sinn machen.
Der Admin hat jedoch die Berechtigung eine Default.bar mit der zugehörigen Cachedatei Default.br2 im Total Commander Programmpfad zu lesen und zu schreiben. Darum holt er sich die Default.bar genau daher. [...]
Und eine fehlende Pfadangabe interpretiert T.C. im ersten Anlauf so, dass die Datei im Programmordner zu suchen ist.
Genau das wuerde alles erklaeren! Wenn nicht ...
In der wincmd.ini steht im Abschnitt [Buttonbar] entweder gar nichts oder einfach:

Code: Select all

[Buttonbar]
Buttonbar=Default.bar
... in der wincmd.ini

Code: Select all

[Buttonbar]
Buttonbar=%APPDATA%\GHISLER\default.bar
stehen wuerde.
Und das muss definitiv nach c:\user\appdata\roaming\ghisler\default.bar aufloesen ...

Ich hab es zur Sicherheit auch gerade ueberprueft, "admin" kann auf diese Datei auch schreiben ...

Gibt's ja nicht .... ;-)
Post Reply