Question
Ecrire une clé de registre avec espaces
- JoJo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 15 ans 2 mois #9006
par JoJo
Ecrire une clé de registre avec espaces a été créé par JoJo
Bonjour,
j'ai un petit souci qui ne se produit pas sur toutes mes machines. je cherche à écrire une clé dans HKEY_Users, sous la ruche de l'utilisateur loggué, ceci en tant qu'administrateur...(je suis loggué avec un compte user standard et j'éleve mon powershell ISE)
Ce script fonctionne tres bien lorque la clé ne contient pas d'espaces dans son chemin. Des qu'il y en a, j'ai une erreur d'écriture.
Le code :
[code:1]function ConvertTo-Sid ($NtAccount)
{
(new-object system.security.principal.NtAccount($NTaccount)).translate([system.security.principal.securityidentifier])
}
################ Script ###################
$LoggedOnUser = (Get-WmiObject Win32_ComputerSystem).Username
$UserID = (ConvertTo-Sid ($LoggedOnUser)).Value
$RegKey = $UserID+\"\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\"
$Name = \"DefaultConnectionSettings\"
$valuetest = \"test\"
[Microsoft.Win32.registrykey] $oregkey = [Microsoft.Win32.registry]::Users
$oregkey = $oregkey.OpenSubKey($RegKey, $true)
$oregkey.SetValue($Name, $valuetest)
$oregkey.Close()[/code:1]
HELP !!!
Merci
j'ai un petit souci qui ne se produit pas sur toutes mes machines. je cherche à écrire une clé dans HKEY_Users, sous la ruche de l'utilisateur loggué, ceci en tant qu'administrateur...(je suis loggué avec un compte user standard et j'éleve mon powershell ISE)
Ce script fonctionne tres bien lorque la clé ne contient pas d'espaces dans son chemin. Des qu'il y en a, j'ai une erreur d'écriture.
Le code :
[code:1]function ConvertTo-Sid ($NtAccount)
{
(new-object system.security.principal.NtAccount($NTaccount)).translate([system.security.principal.securityidentifier])
}
################ Script ###################
$LoggedOnUser = (Get-WmiObject Win32_ComputerSystem).Username
$UserID = (ConvertTo-Sid ($LoggedOnUser)).Value
$RegKey = $UserID+\"\Software\Microsoft\Windows\CurrentVersion\Internet Settings\Connections\"
$Name = \"DefaultConnectionSettings\"
$valuetest = \"test\"
[Microsoft.Win32.registrykey] $oregkey = [Microsoft.Win32.registry]::Users
$oregkey = $oregkey.OpenSubKey($RegKey, $true)
$oregkey.SetValue($Name, $valuetest)
$oregkey.Close()[/code:1]
HELP !!!
Merci
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 15 ans 2 mois #9009
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Ecrire une clé de registre avec espaces
Salut,
Pour un accès local, la ruche HKEY_USERS\[SID de l'utilisateur actuellement connecté] est accessible directement depuis la ruche HKEY_CURRENT_USER.
Donc, à moins de vouloir accéder à HKEY_CURRENT_USER à distance, je ne vois pas quel est ton intérêt de vouloir absolument résoudre le SID de l'utilisateur connecté avant de procéder à la modification du registre utilisateur, via un script exécuté en local...
Afin de récupérer l'utilisateur actuellement connecté sur la machine, tu n'es pas obligé de faire appel à WMI. Tu peux simplement passer par les variables d'environnement (peut être plus \"léger\") :
[code:1]$LoggedOnUser = $env:USERDOMAIN+\"\\"+$env:Username[/code:1]
Toutefois, je viens de tester ton script, et il fonctionne... Même si le chemin de la clef contient des espaces.
Quel est le message d'erreur que tu observes, lorsque le script ne fonctionne pas ?
Pour un accès local, la ruche HKEY_USERS\[SID de l'utilisateur actuellement connecté] est accessible directement depuis la ruche HKEY_CURRENT_USER.
Donc, à moins de vouloir accéder à HKEY_CURRENT_USER à distance, je ne vois pas quel est ton intérêt de vouloir absolument résoudre le SID de l'utilisateur connecté avant de procéder à la modification du registre utilisateur, via un script exécuté en local...
Afin de récupérer l'utilisateur actuellement connecté sur la machine, tu n'es pas obligé de faire appel à WMI. Tu peux simplement passer par les variables d'environnement (peut être plus \"léger\") :
[code:1]$LoggedOnUser = $env:USERDOMAIN+\"\\"+$env:Username[/code:1]
Toutefois, je viens de tester ton script, et il fonctionne... Même si le chemin de la clef contient des espaces.
Quel est le message d'erreur que tu observes, lorsque le script ne fonctionne pas ?
Connexion ou Créer un compte pour participer à la conversation.
- JoJo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 15 ans 2 mois #9010
par JoJo
Réponse de JoJo sur le sujet Re:Ecrire une clé de registre avec espaces
L'interet de resoudre le SID de l'utilisateur connecté reside dans le fait que le script sera executé avec un compte LOCALSYSTEM (via une tache planifiée), donc je ne peux pas taper sur HKCU directement...
Sinon l'erreur
[code:1]Exception calling \"SetValue\" with \"2\" argument(s): \"Attempted to perform an unauthorized operation.\"
At E:\Test.ps1:16 char:18
+ $oregkey.SetValue <<<< ($Name, $valuetest)
+ CategoryInfo : NotSpecified: (: ) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException[/code:1]
Et c'est ce que je disais aussi ce script fonctionne sur 2 de mes 3 machines...weird
Sinon l'erreur
[code:1]Exception calling \"SetValue\" with \"2\" argument(s): \"Attempted to perform an unauthorized operation.\"
At E:\Test.ps1:16 char:18
+ $oregkey.SetValue <<<< ($Name, $valuetest)
+ CategoryInfo : NotSpecified: (: ) [], MethodInvocationException
+ FullyQualifiedErrorId : DotNetMethodException[/code:1]
Et c'est ce que je disais aussi ce script fonctionne sur 2 de mes 3 machines...weird
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 15 ans 2 mois #9011
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Ecrire une clé de registre avec espaces
OK !
Je comprends beaucoup mieux le besoin et je retire donc ce que j'ai écrit
\"Attempted to perform an unauthorized operation.\" : ça fait penser à un problème de permission...
Tu es sous quelle version de Windows ?
Je comprends beaucoup mieux le besoin et je retire donc ce que j'ai écrit
\"Attempted to perform an unauthorized operation.\" : ça fait penser à un problème de permission...
Tu es sous quelle version de Windows ?
Connexion ou Créer un compte pour participer à la conversation.
- JoJo
- Auteur du sujet
- Hors Ligne
- Membre junior
-
Réduire
Plus d'informations
- Messages : 20
- Remerciements reçus 0
il y a 15 ans 2 mois #9012
par JoJo
Réponse de JoJo sur le sujet Re:Ecrire une clé de registre avec espaces
Oui ça m'a bien entendu fait penser à ça aussi...
Sauf que les membres du groupe administrateur ont full control en ACL sur les clés en question...
Je suis sur Windows 7 64
Sauf que les membres du groupe administrateur ont full control en ACL sur les clés en question...
Je suis sur Windows 7 64
Connexion ou Créer un compte pour participer à la conversation.
- Matthew BETTON
- Hors Ligne
- Membre platinium
-
Réduire
Plus d'informations
- Messages : 968
- Remerciements reçus 0
il y a 15 ans 2 mois #9013
par Matthew BETTON
Réponse de Matthew BETTON sur le sujet Re:Ecrire une clé de registre avec espaces
... oublier ma question : tu as déjà indiqué que tu utilises PowerShell ISE en mode élevé... => Je ne vois pas pourquoi tu as ce problème...<br><br>Message édité par: Matthew BETTON, à: 24/02/11 16:29
Connexion ou Créer un compte pour participer à la conversation.
Temps de génération de la page : 0.041 secondes
- Vous êtes ici :
-
Accueil
-
forum
-
PowerShell
-
Entraide pour les débutants
- Ecrire une clé de registre avec espaces