Gå till innehåll

Systemvariabler i registret


Recommended Posts

Jag försöker förbättra mina installers för de registerhack som kräver ett litet script, för att fungera (se "Starta om Utforskaren" som exempel).

För att undvika elevation, vill jag nu placera filerna i användarprofilen, istället för nuvarande C:\root. Problemet är då att körkommandot i registret inte verkar fungera med systemvariabler... så länge jag använder absoluta sökvägar fungerar det, men det är ju oanvändbart i en allmän installer.

INF-filen jag använder för att skapa installern ser ut som följer, och problemet är alltså kommandot under [Add.Context3]. Jag har provat systemvariablerna %AppData% och %UserProfile%... inget fungerar, utom absolut sökväg. Någon som kan hjälpa mig runt detta?

[version]
signature="$Windows NT$"


[DefaultInstall]
CopyFiles=Context.Files3
AddReg=Add.Context1,Add.Context2,Add.Context3


[DestinationDirs]
Context.Files3=53,AppData/Roaming/Context/RestartExplorer

[Context.Files3]
restartexplorer.bat
uninstall3.reg

[Add.Context1]
HKCU,Software\Classes\Directory\Background\shell\restartexplorer,HasLUAShield,0x00000000

[Add.Context2]
HKCU,Software\Classes\Directory\Background\shell\restartexplorer,MUIVerb,0x00000000,Starta om Utforskaren

[Add.Context3]
HKCU,Software\Classes\Directory\Background\shell\restartexplorer\command,,0x00000000,%AppData%\Context\RestartExplorer\restartexplorer.bat

Länk till kommentar
Dela på andra webbplatser

Nu fattar jag inte riktigt vad du menar, men både %AppData% (som leder direkt till Roaming) och %UserProfile% är testat utan framgång.

Faktum är att jag inte lyckas med några systemvariabler överhuvudtaget... endast absolut sökväg fungerar. Jag behöver alltså ett annat sätt att anropa "restartexplorer.bat".

Länk till kommentar
Dela på andra webbplatser

Gäst opensource

Windows register är bara en databas. Det är upp till programmen som läser datan hur den ska tolkas och eventuellt utvärderas. Om programmet i fråga inte utvärderar systemvariabler utan direkt använder strängen är det inte något att göra åt saken.

Du kan göra ett script som skapar en registerfil med redan utvärderade systemvariabler:

echo %AppData% >> filnamn

Ovanstående utvärderar systemvariabeln och skriver ut resultatet i slutet av filen.

Länk till kommentar
Dela på andra webbplatser

Tack, men nu blev det för avancerat för mig, jag är inte programmerare. Det hela var bara ett försök att undvika förhöjda rättigheter vid installationen av ett simpelt högerklickskommando, i utforskaren. Jag får väl bara acceptera att jag går bet på det. :(

Länk till kommentar
Dela på andra webbplatser

Registret må vara bara en databas, men än löjligare om det inte skulle kunna gå att lösa problemet.

Utgår från "elevation" - popup rutan från UAC.

Skulle gissa på delar av detta har skärpts upp i hur enkelt det kan administreras ur säkerhetsynpunkt.

Bl.a har man ju försvårat möjligheterna för användare i att starta program & körningar via genvägar som laddas via schemaläggaren i windows, så då har säkert fler närliggande områden till UAC och behörighet också gjorts om.

Skulle inte va otänkbart.

Vad händer om allt istället körs via VB skript när värdena skrivs till registret?

Man skulle iof få fråga om köra skriptet men försvinner inte UAC prompten?

Beror kanske på fall till fall :)

http://www.activexperts.com/activmonitor/windowsmanagement/adminscripts/registry/

Länk till kommentar
Dela på andra webbplatser

Alltså... det ursprungliga "hacket" består av 5 filer... 1 reg-fil som skapar högerklicksmenyn + 1 som tar bort den, 1 ikon för menyn, 1 scriptfil (vbs) som verkställer själva kommandot och en kommandoradsfil (cmd) som installerar allt och placerar filerna i en mapp på C:/root. Ganska krångligt att hantera för normalanvändaren alltså.

Nu råkade jag hitta ett gamalt Windows-verktyg (iexpress.exe) varmed jag lyckades skapa en enda installationsfil (exe) av dom 5 filerna. Allt fungerar utmärkt, med det undantaget att exe-filen måste köras som administratör för att fungera, eftersom den dels skriver till HKEY_CLASSES_ROOT i registret, dels kopierar filer till %systemroot%.

Jag fick då idéen att man kanske kunde undvika elevationen genom att dels skriva registernycklarna till HKEY_CURRENT_USER, dels kopiera nödvändiga filer till %UserProfile% istället... och ta mig tusan, det fungerade också utmärkt.

Problemet är bara att explorer.exe inte läser sökvägen i registret, när jag skriver den med systemvariabler... skriver jag den däremot som absolut sökväg, fungerar det fortfarande lika bra. Absolut sökväg är dock oanvändbart för alla utom för mig själv... och det var ju inte riktigt det som var meningen.

En normalbegåvad programmerare löser naturligtvis detta genom att skapa en ny installerare, förmodligen på något helt annat sätt än den jag skapat. Programmerare är jag INTE, om än normalbegåvad, så jag nöjer mig alltså med den installerare jag redan har...

Redigerad av e-son
Länk till kommentar
Dela på andra webbplatser

Tack jarru! Din länk talade om för mig vad problemet var.

Jag hade helt enkelt satt fel flagga på det 3:e registervärdet, det skapades som vanligt strängvärde när det i själva verket måste vara expanderbart. :)

Nu återstår ett kosmetiskt fel. Installationen, och funktionen, fungerar perfekt, men installationsförloppet säger att den misslyckades... vilket alltså inte stämmer.

Har just nu inte den blekaste om vad jag nu gjort för fel. :(

Installationsdialogen ser ut som följer... Det skall förresten stå "i Utforskarens högerklickmeny"... inte "skrivbordets".

post-1936-0-14894700-1330155908.png

post-1936-0-95339400-1330155924.png

post-1936-0-62874600-1330155939.png

Redigerad av e-son
Länk till kommentar
Dela på andra webbplatser

Delta i dialogen

Du kan skriva svaret nu och registrera dig senare, Om du har ett konto, logga in nu för att svara på inlägget.

Gäst
Svara i detta ämne...

×   Du har klistrat in innehåll med formatering.   Ta bort formatering

  Only 75 emoji are allowed.

×   Din länk har automatiskt bäddats in.   Visa som länk istället

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Skapa nytt...