ugrás a tartalomhoz

Registry bejegyzés megnyitása weblapról

TIV · 2006. Jún. 8. (Cs), 15.53
Üdvözletem!

Ezen a weblapon is megpróbálkozok a lehetetlennel, remélem itt nem leszek letiltva, törölve. Egy olyan dolgot szeretnék megvalósítani egy weblappal, amire nemigen van példa. Sajnos egyetlen fórumon se hitték el, h NEM rosszindulatú oldalak készítésére szeretném használni és nem is hacker-trükkről vagy valamilyen bug kisználásáról lenne szó.

Böngésző: Internet Explorer 6 és 7

Szeretnék létrehozni egy olyan weblapot, amely egy, a gépre telepített programmal együttműködik. Ez egy windows optimalizáló program lenne. Alapvetően az lett volna a feladat, h egy adott linkre kattintva az oldalamon ÉS CSAKOTT!!! egy reg fájlt NE felajánljon megnyitásra, mentésre, hanem azt közvetlen nyissa meg. Ez persze azt jelenti, h a háttérben titokban letöltődik és elindítja azt a programot, amihez ugye windowsban társítva van.
NEM BUGGAL, nem hacker módszerrel akarom ezt, hanem a felhasználó, látogató teljes beleegyezésével. Ezalatt azt lehet érteni, h mindenféle internet és biztonsági beállítást beállít annak érdekében, h ez működjön, csak ezen az oldalon! Nem tudom, ezt talán activeX kontrollal lehet véghezvinni?:O Nem ismerem sajna...

Attól tartok ezt így önmagában nem lehet véghezvinni. De megoldható-e úgy, h a weblap megkér a gépre előzőleg telepített programot, h hajtsa végre az adott registry módosításokat. Szóval weblap-program együttműködésre lenne szükség, csak azt nem tudom van-e erre lehetőség és hogyan.

Ehhez kérem a (legális körülmények közötti) lehetőségek felvetését!
Előre is köszönöm!
TIV
 
1

Gondolkozz

janoszen · 2006. Jún. 8. (Cs), 16.39
Gondolkozz egy picit és utána felejtsd el az ötletet.
2

Telepített program

Poetro · 2006. Jún. 8. (Cs), 16.49
Ami megvalósítható:
Letöltetsz egy programot a felhasználóval, aki azt elindítva kap egy explorer felületet, mint a MyIE2 vagy Avant Browser. Persze ezt a programot neked kellene megírni, felhasználva hogy az Internet Explorer beépíthető bármilyen windows-os programba, csak abban a megfelelő függvényeket kell meghívni. És ez a program különbözőképpen működhet különböző weboldalak megtekintése esetén.
Sajnos ez a mód nem igen járható, de ha ez kell, és sok szabadidőd van, és tudsz Windows alá programozi, vagy sok pénzed van, akkor mindent lehet.

Másik megoldás, hogy írsz egy ActiveX plugint ami lehetővé teszi ezt számodra. Erre ugyanazok érvényesek, mint előbb, tehát sok szabadidő, tudsz Windows alá programozi, vagy sok pénzed van.
3

technetklub

Hodicska Gergely · 2006. Jún. 11. (V), 12.31
Próbáld meg a technetklub levlistái közül ezt a kérdést a fejlesztői nyilvános listán feltenni. Ott biztosan fogják tudni a választ, mégha az esetleg nemleges is. Bár csodálkoznék, ha egy külön engedélyezett activex nem írhatná a registryt.


Felhő
4

ActiveX... nem nagy dolog

vbence · 2006. Jún. 11. (V), 18.54
Halihó!
Én olyat csináltam, ami (egy webes admin felülethez) kiolvassa aztuális windows user nevét. Végtelenül egyszerű. Akár visualbasic vagy visualc segítségével (én asszem vb-ben írtam).

A forrás minden jel szerint megsemmisült, de azért még megnézem egy helyen... nincs meg.

A lényeg: csinálsz egy activeX projectet, hozzáadod ezt a registry buheráló class-t. Ha szkriptből akarod irányítani, akkor "safe for scripting"-nek kell megjelölni az ActiveX objectet telepítéskor.

Arra momentán nem ugrik be jó megoldás, hogy csak a te site-odon működjön, úgyhogy alapból bárki csinálhat olyan oldalt, ami betölti a controlodat, és végrehajtat vele dolgokat. A biztonsági funkciót mindenképen magába az ActiveX-edbe kell beépíteni (lekérdezi az őt tartalmazó weblap címét valahogy). Fel kell készülni az XSS kivédésére is (rosszemberek úgy manipulálhatják a környezetet, hogy a control azt higyje a te oldaladról jön a script)...

A registryhez a class-t feltöltöm ide:
http://vbence.web.elte.hu/stuff/Registry.cls

Itt van pár példa (VB) a használatra:

    Dim reg As Registry
    Set reg = New Registry
    
    Locale = reg.GetStringValue("HKEY_CURRENT_USER\Control Panel\International", "Locale")
    If Val("&h" & Locale) = &H40E Then
        ' magyar
        
        sShortDate = reg.GetStringValue("HKEY_CURRENT_USER\Control Panel\International", "sShortDate")
        sTimeFormat = reg.GetStringValue("HKEY_CURRENT_USER\Control Panel\International", "sTimeFormat")
        sDate = reg.GetStringValue("HKEY_CURRENT_USER\Control Panel\International", "sDate")
        
        If (sShortDate <> "yyyy.MM.dd." And sShortDate <> "Error") Or (sTimeFormat <> "H:mm:ss" And sTimeFormat <> "Error") Or (sDate <> "." And sDate <> "Error") Then
            msg = "Az ön rendszere speciális beállításokat használ a dátum és idő megjelenítésére." & vbCrLf & _
            "Ezeket a szabványosra kell visszaállítani a MIC program helyes működéséhez." & vbCrLf & vbCrLf & _
            "Elvégezheti a program a szükséges változtatásokat?" & vbCrLf
            X = MsgBox(msg, vbExclamation + vbOKCancel, "Területi beállítások")
            If X = vbOK Then
                reg.SetStringValue "HKEY_CURRENT_USER\Control Panel\International", "sShortDate", "yyyy.MM.dd."
                reg.SetStringValue "HKEY_CURRENT_USER\Control Panel\International", "sTimeFormat", "H:mm:ss"
                reg.SetStringValue "HKEY_CURRENT_USER\Control Panel\International", "sDate", "."
                Dim s As SystemInfo
                Set s = New SystemInfo
                If s.PlatformId = 2 And s.MajorVersion >= 5 Then
                    ' win 2000 (vagy újabb) -> nem kell újraindítani
                Else
                    ' újraindítás szükséges
                    msg = "A beállítások érvénybe lépéséhez a számítógép újraindul."
                    X = MsgBox(msg, vbInformation, "Újraindítás")
                    Dim ew As ExitWindows
                    Set ew = New ExitWindows
                    ew.RestartSystem
                    End
                End If
            Else
                msg = "A beállításokat a Start menü > Vezérlőpult > Területi beállítások adatlapon változtathatja meg."
                X = MsgBox(msg, vbInformation, "Területi beállítások")
                End
            End If
        End If
        
        Exit Sub
    Else
        ' nem magyar
        msg = "Az ön rendszerének területi beállítása nem Magyar szabvány szerinti." & vbCrLf & _
        "Ezt át kell állítani a MIC program használatához." & vbCrLf & _
        "A beállítások megváltoztathatók a Start menü > Vezérlőpult > Területi beállítások panelén."
        X = MsgBox(msg, vbExclamation, "Területi beállítások")
        End
    End If