J'ai ce P/Invoke RegSetValueExW qui définit la valeur de la clé de registre. en C#Comment passer un (byte [] lpData) avec une valeur entière à RegSetValueExW P/Invoke
[DllImport("coredll.dll", EntryPoint = "RegSetValueExW")]
public static extern int RegSetValueExW(uint hKey, string lpValueName,
uint lpReserved,
uint lpType,
byte[] lpData,
uint lpcbData);
J'ai un problème avec le 4ème octet de param [] lpdata. Je dois passer un DWORD avec une valeur de 5 (int) dedans. Tout est OK si je passe une chaîne (REG_SZ), juste besoin de convertir en utilisant la fonction GetBytes.
Si j'appelle GetBytes (« 5 »), il convertit en valeur ascii de 53 il écrit 53 sur la valeur de Registre au lieu de 5
Ceci est dangereux - il ne fonctionnera certainement pas si la valeur est supérieure à 255. –
Mais les entiers sont 4 octets, pourquoi créer un tableau de 1 octet? Aussi, que se passe-t-il si votre valeur entière est 4935325? Aussi, pourquoi lancez-vous un int, 5, à int quand vous créez un tableau d'octets? –
err, désolé mon erreur quand j'écrivais. Je voulais le convertir en octets merci. oui c'est dangereux mais c'est le moyen le plus rapide qui me soit venu à l'esprit. –