Probleme windows XP avec mon app. [Résolu]

Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008
- - Dernière réponse : ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008
- 28 avril 2008 à 19:54
Bonjour,

J'ai un petit probleme avec les comptes limités (guest aussi) de windows xp.

Mon programme regarde dans le registre HKEY_LOCAL_MACHINE dossieur Run pour savoir si il est deja dans en demarrage automatique et ajuster les options en consequence (Cocher ou pas la case demarrer avec Windows). Le probleme c'est que les compte limités, guest ou sur vista avec UAC (User Access Control) empeche laccès a cette section du registre ( Seulement HKEY_CURRENT_USER est disponible en Read/Write). Donc quand mon application demarre il y a donc une erreur Failed to set data for 'Nom de lapplication ici' et un deluge de Access Violation qui suit par la suite a cette erreur.

Comment puis-je eviter ce probleme?
Y-a t'il une facon de detecter ce type de compte ?

Car de toute facon mon application n'est pas faite pour rouler sur un compte limiter mais vaut mieu prevenir lutilisateur avant que toute plante grave!

Hélas je n'ai pas trouver grand documentation sur ce type de compte et comment le detecter.

Quelqu'un a déja fait face a ce probleme ?

Merci de m'aider ! C'est beaucoup aprécier!

Bonne journee,

Laurent

http://www.xpresstracker.com<strike>
</strike>http://www.qsc-news.com
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
3
Merci
"Je veux bien mais il n'y a pas d'autre facon par le registre de mettre son application en demarrage!!!"

et ça c'est du sushi ?
|
V

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\run

°(^_^)°

de toute façon 3 systeme = 3 methodes (selon la compatibilitée)

heureusement, les 3 ont une structures identique pour le registre et 2k et XP ont au moins l'avantage d'etre trés similaire en fonctionnement contrairement a caca.

sinon utilise cela, copie-colle dans une nouvelle unitée, enregistre et hop :

unit WindowsInfos;
{ WindowsInfos unit
  by Deefaze (c) 2008
}

interface

uses Windows;

function WindowsInfosAviable : boolean;
function WindowsName : string;
function WindowsVersionMajor : LongWord;
function WindowsVersionMinor : LongWord;
function WindowsBuildNumber : LongWord;
function WindowsPlatformId : LongWord;

implementation

var
  __WindowsInfosAviable : boolean;
  __WindowsName         : string;
  __WindowsInfos        : OSVERSIONINFO;

function WindowsInfosAviable : boolean;
begin
  result := __WindowsInfosAviable;
end;

function WindowsName : string;
begin
  if __WindowsInfosAviable then
    result := 'Microsoft Windows '+__WindowsName+' '+__WindowsInfos.szCSDVersion
  else
    result := __WindowsName;
end;

function WindowsVersionMajor : LongWord;
begin
  result := __WindowsInfos.dwMajorVersion;
end;

function WindowsVersionMinor : LongWord;
begin
  result := __WindowsInfos.dwMinorVersion;
end;

function WindowsBuildNumber : LongWord;
begin
  result := __WindowsInfos.dwBuildNumber;
end;

function WindowsPlatformId : LongWord;
begin
  result := __WindowsInfos.dwPlatformId;
end;

initialization

  __WindowsInfos.dwOSVersionInfoSize := SizeOf(__WindowsInfos);
  __WindowsInfosAviable := windows.GetVersionEx(__WindowsInfos);
  if __WindowsInfosAviable then
  begin
    case __WindowsInfos.dwMajorVersion of
      //0 : __WindowsName := '95';       { obsolete }
      //3 : __WindowsName := 'NT 3.5';   { obsolete }
      //4 : __WindowsName := 'NT 4.0';   { obsolete }
      5 : case __WindowsInfos.dwMinorVersion of
            0 : __WindowsName := '2000';
            1 : __WindowsName := 'XP';
            2 : __WindowsName := '2003/2003R2';
          end;
      6 : __WindowsName := 'Vista/Server 2008';
      7 : __WindowsName := 'Seven';
      //10: __WindowsName := '98/98SE';  { obsolete }
      //90: __WindowsName := 'ME';       { obsolete }
      else
        __WindowsName := 'Unknow';
    end;
  end;

end.

<hr size="2" width="100%" />

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 214 internautes nous ont dit merci ce mois-ci

Commenter la réponse de f0xi
Messages postés
4200
Date d'inscription
samedi 16 octobre 2004
Statut
Modérateur
Dernière intervention
2 janvier 2019
26
0
Merci
Utiliser Vista est deja une erreur en sois.
alors tenter de programmer dessus ... c'est carrement la loose.

de toute façon HKLM devrait etre réservé aux pilotes et logiciels systeme (Firewall, antivirus).
tout le reste doit aller en HKCU.

<hr size="2" width="100%" />
Commenter la réponse de f0xi
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008
0
Merci
>>Utiliser Vista est deja une erreur en sois.
>>alors tenter de programmer dessus ... c'est carrement la loose.

C'est pas ce que mes clients pense de Vista mal heureusement!

>>de toute façon HKLM devrait etre réservé aux pilotes et logiciels systeme (Firewall, antivirus).

Je veux bien mais il n'y a pas d'autre facon par le registre de mettre son application en demarrage!!! (épargner moi svp le truc du dossier Startup)

Coté professionnel, il faut developper pour que sa marche sur nimporte quel OS Microsoft recent (je supporte win 2k et +), c'est la regle pour ne pas te metre a dos des utilisateurs du type «early adopters»

Meilleur souhaits!
Laurent

http://www.xpresstracker.com<strike>
</strike>http://www.qsc-news.com
Commenter la réponse de ELCouz
Messages postés
135
Date d'inscription
jeudi 22 mars 2007
Statut
Membre
Dernière intervention
25 juillet 2008
0
Merci
Merci beaucoup f0xi!

Tres pratique ton code, c'est sur que je vais le garder !

Allez vien je te paye un verre.... désalcoolisé bien sur !

Bonne journee!

Laurent

http://www.xpresstracker.com<strike>
</strike>http://www.qsc-news.com
Commenter la réponse de ELCouz