ENG2ITA Community > Unattended per Windows Vista/7/8/10

Pagine:  [1] 2
[Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: DMD

Buongiorno

Non so se sono il solo, ma mi sto sbattendo da vari giorni con questo problema.
Il fatto mè che la procedura RunOnceEx via supporto esterno, mi viene bloccata dai permessi di amministratore, pur avendo il controllo UAC disattivato.
Il bello  è che a parità di condizioni in Windows 7, tutto funziona senza problema.
Lanciando il file "RunOnceEx.cmd" le varie key non vengono scritte in quanto ne viene negato l'accesso al registro di sistema, e comunque anche lanciando direttamente gli autoestraenti, questi vengono decompressi ma non vengono eseguiti per lo stesso motivo
Questo è lo script di esempio che utilizzo come test:

Codice:
@Echo Off

SET PP=E:\Test_RunOnce\Progetto\Applicazioni_RunOnce

REG ADD HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx /f
SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

REG ADD %KEY% /v Flags /t REG_DWORD /d "20" /f

REG ADD %KEY% /V TITLE /D "Software Aggiuntivo" /f

REG ADD %KEY%\0002 /VE /D "Installazione Programmi..." /f

REG ADD %KEY%\0080 /V 1 /D "%PP%\0080_7-Zip_9.20.exe" /f
REG ADD %KEY%\0940 /V 1 /D "%PP%\0940_FastStone_Viewer_5.1.exe" /f

REG ADD %KEY%\3030 /V 1 /D "%PP%\3030_Restart.cmd" /f

ENDLOCAL
EXIT



Postato il: 19/12/2014, 11:08


Quindi posso dire che in Windows 8.1 (da supporto esterno) ho notato per il momento queste due difficolta:
1- Non si può scivere nelle key reg HKLM ma lo si può fare invece in HKCU.
2- Il lancio file con parametri silent non viene eseguito (es. pippo.msi /quiet /norestart), solo con il lancio normale con tutte le finestre di dialogo viene eseguito.

Esiste qualche soluzione in merito, oppure  l'unica strada è solo la procedura "Setupcomplete"  via ISO?

Cordialmente ringrazio
Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: onepiece

Ciao DMD, non esiste un modo anzi e completamente vietato\impossibile in WindowsNT6.x modificare il registro HKLM o altri impostazioni protette dal Admin Right senza eseguire come Admin il file.exe o file.msi o altro qualunque cosa sia, il punto e che molti si confondono (capiscano male, e sono mal informati) riguardo la disabilitazione del UAC in Windows Vista/Seven, che lo capiscano come un soluzione di problemi, invece e completamente il contrario, quello solo non visualizza il MsgBox di richiesta, cosi anche con UAC disabilitato se non sei Admin o non esegui come Admin un applicazione non potrai modificare il registro o altro, anzi a molti li a creato molti problemi il UAC disabilitato perché eseguono un EXE e in silent mod quello exe (non essendo il UAC abilitato parte dopo come utente normale) non fa tutto il lavoro ma solo una parte del lavoro, e utente non capisce proprio niente (in caso che il creatore del applicazione non a preveduto a quello scenario e non informa il Utente) e questo e un cosa davvero seria perché nemmeno ti accorgi che qualche cosa non va, adesso molti applicazioni seri hanno presso le precauzioni al riguardo (dal Manifest Resources si indica\chiede al sistema eseguire per forza come Admin Right (requireAdministrator) quello file, oppure non procedere avanti) ma non tutti diciamo, perché nel Manifest Resources potrà essere indicato esegui il file come permessi massimi possibili (highestAvailable), se sei Admin esegui come Admin se no esegui comunque (in questo caso uguale come asInvoker) etc etc, in tempo del Windows Vista sono stati molti rimanere vittime di certi scenari (perché ne allora e ne oggi molti applicazioni non usano il Manifest Resources ehhh), cosi il UAC disabilitato potrà essere la fonte di problemi molto molto seri, cosi e consigliato manterrete sempre UAC abilitato

in povere parole il tuo "RunOnceEx.cmd" chi lo lancia\esegue ???? se e un processo che non ha i permessi di Admin allora non ce modo eseguire applicazioni che necessitano per forza il Admin Right

detto tutto questo perché ce molto confusione, che differenza ha il tuo "RunOnceEx.cmd" dal  "Setupcomplete", cosa non puoi fare dal "Setupcomplete" che lo potrai farlo dal "RunOnceEx.cmd" ?? voglio dire secondo il tuo scenario (o quello che vuoi fare o ottenere li) chi sono i Pro e i Contro trai due modi ????

Ciao.
Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: DMD

One ti ringrazio per la tua spiegazione.

Allora mi posso dimenticare quello che potevo fare da Win XP a Windows 7, ossia lanciare i programmi silent da supportro USB e anche via RunOnceEX.
Da Windows 8.1 e penso lo sarà anche con 10 avranno tutte le protezioni" rinforzate"
A questo punto chiedo se possa esistere una soluzione alternativa per lanciare programmi silent ed eventualmente in sequenza, da supporti esterni.

Un saluto


Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: onepiece

Ciao DMD, ce ancora molta confusione, tutto quello sopra era per spiegare che non e il UAC il problema, non e cambiato niente li, io ancora non o la minima idea cosa vuoi fare li o come vuoi farlo, perché come detto ce molto confusione, quello che voglio dire e che non capisco da dove e come e quando viene scritto\entra il registro (RunOnceEx), chi esegue o deve eseguire il file cmd di sopra e quando??, perché io credo che tu non riesci scrivere il registro cosi il UAC non centra perché se non ce nessun comando in RunOnceEx allora il RunOnceEx steso non centra niente, perché se non sei Admin allora non dovrai\devi eseguire modificazioni in Sistema, Microsoft Windows non usa il UAC come penalizzazione ma la usa per protezione, dai test veloci (visto che sinceramente non uso il RunOnceEx da tempi di Windows XP forse dal 2006-2007) in Windows 10 se scrivi in registro in RunOnce (che e lo stesso del RunOnceEx) un comando di eseguire un file.exe, quello al prossimo avvio la esegue come Admin e senza aprire MsgBox del UAC, appunto o detto sopra non e  cambiato proprio niente li, anzi le cose sempre si migliorano cosi Windows sapendo che solo un Admin potrà scrivere in RunOnceEx allora esegue tutti i comandi che partono dal RunOnceEx  come Admin

un test veloce potrai farlo eseguendo il tuo file cmd come Admin, che scriverà il RunOnceEx, dopo esporta il RunOnceEx in %Desktop%\RunOnceEx.reg, dopo click destro sul RunOnceEx.reg e dopo DX Registry TWEAKS True AddOn Creator dopo integra il AddOn con WInNT6.x True Integrator

Ciao.
Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: DMD

Grazie per le risposte One.

Comunque chiedevo, abbandonando la procedura RunOnce quale altra procedura è meglio adottare?

Un saluto
Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: DMD

Il problema del lancio in sequenza dei programmi autoinstallanti silent, con questa procedura funziona.

1- Creazione del file .bat di lancio, tipo questo:

Codice:
@echo off
:inizio
cls
Color 2f
echo ==========================================
echo.
echo  Installazione software in sequenza
echo.
echo ==========================================
echo.
start /wait Programma 1.exe
start /wait Programma 2.exe
start /wait Programma xx...exe
EXIT

2- Compilazione del file bat in exe con BAT to EXE Converter

3- Lanciare come Amministratore il file di Lancio.exe, questo perchè lanciando il file. bat (come amministratore) non permette di riconoscere i vari software da avviare.

Un saluto
Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: onepiece

Ciao DMD, non ce niente che non si risolve, ma io continuo non capire perché sia lanciando un file cmd sia lanciando un file exe e la stesa cosa in questo caso perché a te manca esecuzione con Admin Right cosi sia lanciando un file cmd sia lanciando un file exe o altro qualunque cosa sia, e la stesa cosa se non la lancia\esegue come Admin niente funzionerà, cosi torniamo al origine del tuo problema ancora
da dove e come e quando viene scritto\entra il registro (RunOnceEx), chi esegue o deve eseguire il file cmd di sopra e quando??,
se no mi sbaglio il punto e che tu cerca risolvere il problema in modo sbagliato, come dire sei entrato in un vicolo ceco e qualunque cosa tu fai ritornerai sempre nel origine del  problema che e quello detto sopra, che a te manca il diritto di eseguire\lanciare una cosa con Admin Right, cosi e inutile discutere dopo cosa lancerai\eseguirai un exe bat o msi o altro

allora il SetupComplete.cmd viene lanciato\eseguito dal sistema (con Admi Right) a primo avvio dopo la installazione propri come RunOnce\RunOnceEx, cosi se tu non riesci scrivere in registro i comandi da eseguire in RunOnceEx  (il esempio sopra di creare un True AddOn che fa in modo di scrivere o entrare il registro in RunOnceEx e molto valido), allora usa il SetupComplete.cmd, che e quello che io consiglio perché e meglio per migliaia di ragioni, dal SetupComplete.cmd potrai fare tutto quello che vuoi e non solo eseguire un comando, cosi visto che tu sei fissato diciamo con RunOnceEx o hai gia tutti comandi cosi dal vecchi AddOn, o dirlo piu bene che per ragioni di compatibilità vuoi usare il RunOnceEx Mod, allora in SetupComplete.cmd scrivi

Codice:
FOR %%i IN (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%i:\Test_RunOnce\Progetto\Applicazioni_RunOnce\*.* SET CDROM=%%i:

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx

REG ADD %KEY% /V TITLE /D "Installazione Componenti" /f

REG ADD %KEY%\001 /VE /D "7-Zip" /f
REG ADD %KEY%\001 /V 1 /D "%CDROM%\Test_RunOnce\Progetto\Applicazioni_RunOnce\7z935.exe /S" /f

REG ADD %KEY%\002 /VE /D "Unlocker" /f
REG ADD %KEY%\002 /V 1 /D "%CDROM%\Test_RunOnce\Progetto\Applicazioni_RunOnce\unlocker.exe /S" /f

:: e in fine lancia\esegui RunOnceEx Process
:: che di deault aspeta la fine del RunOnceEx, cosi nessun altro
:: comando del SetupComplete si eseguirà prima di finire il RunOnceEx
rundll32.exe iernonce.dll,RunOnceExProcess

:: oppure lancia\esegui il tuo file cmd
::E:\Test_RunOnce\Progetto\Applicazioni_RunOnce\MioRunOnceEx.cmd
::rundll32.exe iernonce.dll,RunOnceExProcess

riguardo  BAT to EXE Converter e altri del genere, non vale la pena e non e utile (li o provato e usato anni fa proprio tutte, perche ce ne sono molti di questi programmi), serve e dovrai usare AutoIt, semplicemente scrivi
Codice:
#RequireAdmin
RunWait(@ComSpec & " /C " & "miofile.cmd", "", @SW_HIDE)
;RunWait(@ComSpec & " /C " & "scrivi il comando", "", @SW_HIDE)
;RunWait("E:\Test_RunOnce\Progetto\Applicazioni_RunOnce\miosetup.exe" & " \Silentcomand", "", @SW_HIDE)
compila il exe con Autoit ed e fata


Ciao.
Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: onepiece

cosi solo per info, visto che come già detto il "rundll32.exe iernonce.dll,RunOnceExProcess" e OKKK (aspetta) di default, ma supponiamo che non aspetta cosi per dare un esempio, o per mostrare come potrai personalizzare di piu il SetupComlete.cmd

Codice:
FOR %%i IN (D E F G H I J K L M N O P Q R S T U V W X Y Z) DO IF EXIST %%i:\Test_RunOnce\Progetto\Applicazioni_RunOnce\*.* SET CDROM=%%i:

SET KEY=HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnceEx
REG ADD %KEY% /V TITLE /D "Installazione Componenti" /f
REG ADD %KEY%\001 /VE /D "7-Zip" /f
REG ADD %KEY%\001 /V 1 /D "%CDROM%\Test_RunOnce\Progetto\Applicazioni_RunOnce\7z935.exe /S" /f
REG ADD %KEY%\002 /VE /D "Unlocker" /f
REG ADD %KEY%\002 /V 1 /D "%CDROM%\Test_RunOnce\Progetto\Applicazioni_RunOnce\unlocker.exe /S" /f
rundll32.exe iernonce.dll,RunOnceExProcess

:Wait
REG QUERY "%KEY%" /v TITLE >NULL
IF ERRORLEVEL 0 Goto Wait

:: quando finirà il RunOnceEx si eseguirà questa line etc etc

oppure

Codice:
7z935.exe /S
:Wait7Zip
tasklist /fi "imagename eq 7z935.exe" |find ":">NULL
IF ERRORLEVEL 1 Goto Wait7Zip
:: quando si chiudera il 7z935.exe si eseguirà questa line etc etc

UnlockerSetup.exe /S
:WaitUnlocker
tasklist /fi "imagename eq UnlockerSetup.exe" |find ":">NULL
IF ERRORLEVEL 1 Goto WaitUnlocker
:: quando si chiuderà il UnlockerSetup.exe si eseguirà questa line etc etc

Ciao.
Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: DMD

One, mi hai dato tanto di quel materiale per fare dei test e studiarci sopra per giorni, sei una fonte inesauribile di idee.  Smiley

Comunque il mio obiettivo, che forse non ho reso in maniera chiara e me ne scuso  , era quello che dopo aver fatto un 'installazione del solo S.O. senza nessun programma esterno (solo componenti Microsoft).
Solo in un secondo momento, con una semplice chiavetta USB poter reinstallare in sequenza tutta  la mia collection di programmi autoinstallanti in maniera automatica.
Questa procedura la effettuo con Win 7 quando mi trovo a dover formattare e reinstallare tutto di nuovo, è un sistema molto comodo, solo che utilizzo  un sistema sbagliato, lo script RunOnceEX su penna USB, cosa che con W8.1 mi ha messo di fronte alle difficoltà che tu mi hai segnalato. Per questo mi sono messo in vicolo cieco nel voler insistere .

Un saluto


Re: [Quesito] RunOnceEx perchè non funziona su Windows 8.1? Di: onepiece

Ciao DMD, quello che vuoi fare e tropo semplice  come idea, potrai usare il file.cmd del post sopra con il modo (RunOnceEx oppure il Wait), oppure come detto e meglio fare un script Autoit che installa tutto li e che i comandi li prende\legge dal un file config.ini

Ciao.

LO-FI Version 1.0 by DarkWolf - Valid XHTML 1.0! - CSS 2.1!