2010-08-10 11 views
0

Pendant que j'essaye de télécharger un registre dans mes registres en utilisant le code C#, l'application jette l'erreur "un privilège requis n'est pas détenu par le client". Si je suis en utilisant le même code sur une autre machine, il fonctionne très bien, mais pas particulièrement sur ma machineun privilège requis n'est pas détenu par le client lors du téléchargement d'un registre temporaire (C#)

J'utilise ci-dessous mentionné code pour télécharger les fichiers de registre

Process my_p = new Process(); 
my_p.StartInfo.FileName = "reg"; 
my_p.StartInfo.Arguments = "load HKLM\TEST C:\Documents and Settings\Administrator\NTUSER.DAT"; 
my_p.Start(); 
my_p.WaitForExit(); 
System.IO.StreamReader srOutPut = my_p.StandardOutput; 
System.IO.StreamReader srError = my_p.StandardError; 
my_p.Close(); 
results = srOutPut.ReadToEnd().Trim(); 
Errors = srError.ReadToEnd().Trim(); 

De plus Une chose que j'ai remarqué que Le code ci-dessus que j'utilise dans le site Web basé sur http, mais lorsque je l'utilise dans un site Web basé sur File Syatem, il fonctionne très bien. S'il vous plaît, aidez, je ne reçois pas l'erreur.

Cordialement, Vikram

Répondre

0

Vous pouvez charger la fonction RegLoadKey directement pour charger la ruche comme une sous-clé. Une autre API est RegLoadAppKey mais elle ne fonctionne qu'à partir de Windows Vista. Différentes versions de Reg.exe utilisent l'API. Comment vous pouvez lire dans la description le RegLoadKey vous devez avoir les privilèges SE_RESTORE_NAME et SE_BACKUP_NAME et les activer (voir http://msdn.microsoft.com/en-us/library/ms717797.aspx). Si vous êtes dans le groupe des administrateurs ou des opérateurs de sauvegarde, vous avez ces privilèges. Un autre problème peut être si Reg.exe utilise la fonction RegLoadKey et vous avez des droits d'administration locaux, mais vous démarrez sur Vista ou Windows 7 une commande sans droits d'administrateur à cause de l'UAC (User Account Control).