web-dev-qa-db-fra.com

Accès refusé pour le stockage local dans IE10

Hier, j'ai installé Windows 8 et j'essaie maintenant de comprendre pourquoi je reçois un message "Accès refusé" lors de l'accès au stockage local. La page est affichée sur le même ordinateur que le navigateur (http: // localhost). Mon sentiment est que l’un des paramètres de sécurité dans IE 10 est erroné, mais je n’ai pas trouvé lequel.

La ligne de code JavaScript déclenchant l'erreur est la suivante:

if(window.localStorage.getItem('phone') == null)

Le code fonctionne bien dans la dernière version de Chrome.

51
Clint Brown

Nos utilisateurs rencontraient des problèmes avec les sites Web qui utilisaient la fonctionnalité LocalStorage (y compris Twitter) sous Windows 8 avec IE 10. Lors de l'accès à l'un de ces sites avec les outils de développement F12 ouverts, un message SCRIPT5: Access is denied apparaissait sur la console.

Après avoir travaillé avec le support technique de Microsoft, nous avons identifié la cause. Les paramètres du dossier C:\Users\username\Appdata\LocalLow dans leur profil utilisateur se sont avérés problématiques.

Chaque dossier de votre ordinateur a un paramètre d'intégrité. Plus d'informations sur le but de ce paramètre sont ici: http://msdn.Microsoft.com/en-us/library/bb625964.aspx

Le paramètre d'intégrité du dossier AppData\LocalLow (et de ses sous-dossiers) du profil de chaque utilisateur est censé être défini sur "Faible" (d'où son nom). Dans notre cas, le niveau d'intégrité n'a pas été défini correctement sur ce dossier. Pour résoudre le problème, exécutez la commande suivante dans une fenêtre d'invite de commande:

icacls %userprofile%\Appdata\LocalLow /t /setintegritylevel (OI)(CI)L

(S'il existe plusieurs comptes d'utilisateurs sur l'ordinateur et que les autres utilisateurs rencontrent le même problème, la commande doit être exécutée sous le compte de chaque utilisateur affecté.)

En ce qui concerne comment ce paramètre a été changé en premier lieu? Dans notre cas, cela était dû à un problème dans l'image Windows 8 personnalisée que nous avions déployée sur nos postes de travail. Mes recherches ont révélé que l’utilisation d’un utilitaire "nettoyeur de système" pouvait être mise en cause par d’autres.

71
Tweek

Les mêmes symptômes pourraient sans doute avoir plusieurs causes, mais voici ce qui a réglé ce problème pour moi.

J'avais juste l'un des nombreux PC Windows 7 avec IE11 présentant le symptôme "Accès refusé" lors de la tentative d'utilisation de JavaScript impliquant window.localStorage à partir de sites Web par ailleurs dignes de confiance et bien tenus. L'utilisation de Process Explorer a révélé que la cause proximale était un accès refusé lorsque taskhost.exe (agissant pour le compte d'Internet Explorer) a tenté d'ouvrir DOMStore\container.dat pour Generic Read-Write. En fait, c’était pire que cela: si je supprimais container.dat, le même ACCESS DENIED se produisait, même à travers le fichier, n’existait plus. Et, si j'ai supprimé le dossier (caché) DOMStore, lorsque taskhost.exe a tenté de le recréer, il a également reçu ACCESS DENIED.

Après deux jours de recherche de fausses pistes, la solution finale était la suivante:

L'entrée de registre:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\LowCache\Extensible Cache\DOMStore\CachePath

(notez que LowCache dans cette chaîne) a été incorrectement défini sur:

%USERPROFILE%\AppData\Local\Microsoft\Internet Explorer\DOMStore

quand cela devrait être:

%USERPROFILE%\AppData\LocalLow\Microsoft\Internet Explorer\DOMStore

avec pour conséquence que les demandes localStorage à faible intégrité étaient dirigées vers des régions d'intégrité moyenne du stockage sur disque AppData, générant ainsi des erreurs ACCESS DENIED et mettant fin à l'utilisation de JavaScript window.localStorage.

Cette entrée de registre doit être fausse depuis de nombreuses années: peut-être un effet secondaire de l'adoption enthousiaste des aperçus de la plate-forme buggy, etc. Cette erreur a survécu à la suppression et à la réinstallation totales de IE11.

Il existe une entrée de registre similaire pour le cache d'intégrité moyenne:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\Cache\Extensible Cache\DOMStore\CachePath

et qui est correctement laissé comme:

%USERPROFILE%\AppData\Local\Microsoft\Internet Explorer\DOMStore

et ne devrait pas être changé.

6
Robin Walker

Essayez d'activer le mode protégé amélioré dans les paramètres IE, sous l'onglet Avancé, dans la sous-liste Sécurité. Cela active le filtre Microsoft XSS. J'avais des problèmes similaires lors de la connexion à SE et de l'extraction des notifications de Google +. Ma première solution de contournement consistait à démarrer IE avec des privilèges d'administrateur. Mais je pense que le mode EP fera aussi l'affaire dans votre cas. 

Liens connexes: Comprendre le mode protégé amélioré

3
programstinator

Mark Russinovich dit toujours: "en cas de doute, utilisez Process Monitor ":

les données localesStorage sont stockées dans des fichiers XML dans le dossier suivant: C:\Users\[USERNAME]\AppData\Local\Microsoft\Internet Explorer\DOMStore

Un profil de l'activité du fichier pendant la reproduction du problème peut vous indiquer si le problème est dû à des autorisations d'accès au fichier manquantes ou peut-être même à un programme anti-virus.

Je peux reproduire l'erreur en ajoutant l'attribut en lecture seule à "DOMStore\container.dat". Vous devez vérifier si toutes les autorisations et tous les attributs de fichiers/dossiers sont définis correctement. Sur ma machine, les administrateurs et mon propre compte ont la permission complète pour le dossier mentionné.

3
Luis Cantero

Allez dans Outils/Options Internet/Avancé et sous «Sécurité», cochez la case «Activer le stockage DOM». Cela devrait résoudre le problème

2
VladMX

J'ai ajouté les sites Web concernés à la section Sites de confiance de IE et je n'ai plus reçu l'erreur.

0
northben

Ce problème peut également être dû à des entrées de registre manquantes ou corrompues. Si une réinitialisation ne résout pas le problème, le dossier LocalLow a le niveau d'intégrité correct et la valeur de registre DOMStore est correcte , exécutez les commandes ci-dessous pour réenregistrer IE dans le profil:

OS 32 bits:

C:\WINDOWS\system32\ie4uinit.exe -BaseSettings

Système d'exploitation 64 bits:

C:\WINDOWS\system32\ie4uinit.exe -BaseSettings
C:\Windows\SysWOW64\ie4uinit.exe -BaseSettings

Voir le IE blog MSDN pour plus de détails.

0
Mitch