Command prompt a elevace

Hlášení chyb a problémů programu Altap Salamander. Buďte, prosím, ve svých popisech co nejpodrobnější a vytvořte pro každý incident nový příspěvek. Nevkládejte programem generovaná hlášení o pádu programu, pošlete je e-mailem.
Raptor

Command prompt a elevace

Post by Raptor »

Zdravim,

prave jsem se nechutne sekl pri pouzivani command shellu. Jsem zvykly pouzivat v AS klavesu "/" na prompt a najednou jsem zjistil, ze nefunguje jak bych cekal. Mam Win7 final x64 (ano, tady tusim zradu, vim ze AS je x64 unfriendly), jsem admin, nemam zaple UAC (momentalne) a tedy cekam ze zapnuti commandu by melo jet jako admin, ale ouha. Z AS to tak neni a ja se divil ze nemuzu spustit treba "sfc /scannow" a haze mi to ruzne chyby. Spustim command normalne ze start menu a jede to.

Otazka zni - je to proste jeden z tech problemu s momentalni nepodporou x64 nebo je to neco jineho?
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Command prompt a elevace

Post by Jan Rysavy »

Kterou ze čtyř Windows 7 voleb pro UAC máte zapnutou? Tu úplně dole, Never notify?

Pokud Salamandera spustíte pravým kliknutím pomocí Run as administrator, zlobí command prompt také?

Command prompt se ze Salamandera spouští pomocí CreateProcess a měl by dědit integrity level od Salamandera.

Pravděpodobně nejde o x64 ani Windows 7 problém (bude to stejne zlobit pod 32b Windows Vista), ale pouze o to, že ke spuštění SFC příkazu potřebujete command prompt běžící s vysokým integrity level. I v případě, že potlačíte UAC prompty, se bude Salamander spouštět s nedostatečným integrity level pro SFC. Můžete mu však upravit zástupce dle obrázku a mít ho permanentně elevovaný (a stejně tak všechny procesy, které Salamander spustí).
Run as administrator
Run as administrator
runasadmin.png (76.92 KiB) Viewed 6224 times
Zda je Salamander elevovaný zjistíte snadno pokusem o vytvoření adresáře v C:\Program Files (x86). Pokud není spuštěný "as admin", měl byste dostat chybu Access denied i v případě, že máte potlačeno zobrazování UAC promptů. Je to dáno nepřipraveností Salamandera na UAC. Případně lze Integrity Level zobrazit pomocí nástroje Process Explorer. Více viz How the Integrity Mechanism Is Implemented in Windows Vista. Pod Windows 7 tento funkční koncept MS na nátlak veřejnosti pouze zmrvili pomocí zadních vrátek, princip ale zůstal shodný.

Snad se nepletu, pokud ano, opravte mě někdo prosím. Zatím jsme problematiku UAC řešili pouze v teoretické rovině.
Raptor

Re: Command prompt a elevace

Post by Raptor »

UAC mam vyple uplne - cili "Never notify".
Zda se ze vse ostatni funguje jak ma (vytvareni adresaru v systemovych oblastech atd.) Jen co se tyka cmd tak ten porad jede spatne at uz delam cokoliv - run AS as admin, nastavovani vlastnosti zastupcu atd.
proces.png
proces.png (13.08 KiB) Viewed 6195 times
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Command prompt a elevace

Post by Jan Rysavy »

Možná by problém mohl souviset s tím, že Salamander spouští 32bitovou verzi cmd.exe, zatímco z Windows spouštíte 64bitovou. Je to vidět ve Správci úloh, přímo ve sloupci s názvem procesu.

Viz rozdílná velikost souborů C:\Windows\System32\cmd.exe a C:\Windows\SysWOW64\cmd.exe pokud na ně koukáte pomocí Windows Explorer (x64 aplikace) a stejná velikosti, pokud je zkoumáte z 32bitového Salamandera.

Salamander se při spouštění command promptu řídí env. proměnnou ComSpec. Zkuste schválně pro zajímavost v konfiguraci Windows změnit její hodnotu z původního
ComSpec=%SystemRoot%\system32\cmd.exe na ComSpec=%SystemRoot%\Sysnative\cmd.exe

Viz How to Suppress and Bypass System32 File System Redirect to SysWOW64 Folder with Sysnative. Salamander (a všechny ostatní aplikace, které se ComSpec proměnnou řídí) pak bude spouštět 64bitovou verzi CMD.EXE.
Raptor

Re: Command prompt a elevace

Post by Raptor »

No nevim jak u vas, ale u mne jsou oba cmd.exe stejne :-)
C:\Windows\System32\cmd.exe
C:\Windows\SysWOW64\cmd.exe

Pokud se podivam na to, co se spusti standardne z win tak je to ten C:\Windows\System32\cmd.exe a SFC funguje. Pokud spustim cmd z AS, spusti se ten samy, ale je pravda ze v procesech je jako cmd.exe *32.

Pokud zmenim onu promennou ComSpec tak pak to funguje i z AS a vse se zda ze jede jak jsem ocekaval. Otazka je zda pak neprestane fungovat neco jineho :-)
Jan Rysavy
ALTAP Staff
ALTAP Staff
Posts: 5231
Joined: 08 Dec 2005, 06:34
Location: Novy Bor, Czech Republic
Contact:

Re: Command prompt a elevace

Post by Jan Rysavy »

Raptor wrote:No nevim jak u vas, ale u mne jsou oba cmd.exe stejne :-)
Ano, ze Salamandera jsou oba soubory "stejné" díky File System Redirector.
Pokud je budete zkoumat pomocí 64bitové aplikace (Windows Explorer pod x64 Windows), zjistíte, že jde o dva různé soubory.

Pokud máte obavy z globální změny ComSpec proměnné, vytvořte si dávku, která proměnnou ComSpec změní a následně spustí Salamandera, který takto upravenou proměnnou zdědí. Samozřejmě pak musíte spouštět Salamandera pomocí této dávky.

Druhá možnost je spouštět CMD.EXE pomocí User Menu. Přidejte si do User Menu položku CMD, která bude mít Command=c:\windows\Sysnative\cmd.exe.

Díky za info, problém tedy označuji jako vyřešený.
Post Reply