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?
Command prompt a elevace
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Re: Command prompt a elevace
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í).
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ě.
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í).
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ě.
Re: Command prompt a elevace
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.
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.
-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Re: Command prompt a elevace
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.
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.
Re: Command prompt a elevace
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

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

-
- ALTAP Staff
- Posts: 5231
- Joined: 08 Dec 2005, 06:34
- Location: Novy Bor, Czech Republic
- Contact:
Re: Command prompt a elevace
Ano, ze Salamandera jsou oba soubory "stejné" díky File System Redirector.Raptor wrote:No nevim jak u vas, ale u mne jsou oba cmd.exe stejne
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ý.