Je suis en train de créer un registre hors ligne dans la mémoire à l'aide du offreg.dll fournies dans les fenêtres DDK package 7.ERROR_MORE_DATA ---- lecture du Registre
Vous pouvez trouver plus d'informations sur le offreg.dll ici: MSDN
Actuellement, tout en essayant de lire une valeur d'une ruche registre ouverte/clé que je reçois l'erreur suivante: 234 ou
ERROR_MORE_DATAVoici le code .h qui contient ORGetValue:
DWORD
ORAPI
ORGetValue (
__in ORHKEY Handle,
__in_opt PCWSTR lpSubKey,
__in_opt PCWSTR lpValue,
__out_opt PDWORD pdwType,
__out_bcount_opt(*pcbData) PVOID pvData,
__inout_opt PDWORD pcbData
);
Voici le code que j'utilise pour tirer les données
[DllImport("offreg.dll", CharSet = CharSet.Auto, EntryPoint = "ORGetValue", SetLastError = true, CallingConvention = CallingConvention.StdCall)]
public static extern uint ORGetValue(IntPtr Handle, string lpSubKey, string lpValue, out uint pdwType, out string pvData, out uint pcbData);
IntPtr myHive;
IntPtr myKey;
string myValue;
uint pdwtype;
uint pcbdata;
uint ret3 = ORGetValue(myKey, "", "DefaultUserName", out pdwtype, out myValue, out pcbdata);
Le but est de pouvoir lire myValue sous forme de chaîne.
Je ne sais pas si je dois utiliser marshaling ... ou un deuxième appel avec un tampon ajusté .. Ou bien comment régler le tampon en C#. Toute aide ou pointeurs seraient grandement appréciés.
Merci.
Pas vraiment sûr de ce que cela ressemblerait dans le code, en utilisant mon exemple ci-dessus pourriez-vous par hasard me montrer une démo? Merci. – user314749
Btw, le buffer.Append ("DefaultUserName"); n'est pas nécessaire. – user314749