Probleme windows XP avec mon app.

Résolu
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008 - 23 avril 2008 à 23:47
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

4 réponses

f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 avril 2008 à 04:13
"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%" />
3
f0xi Messages postés 4205 Date d'inscription samedi 16 octobre 2004 Statut Modérateur Dernière intervention 12 mars 2022 35
24 avril 2008 à 00:01
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%" />
0
ELCouz Messages postés 135 Date d'inscription jeudi 22 mars 2007 Statut Membre Dernière intervention 25 juillet 2008
24 avril 2008 à 00:09
>>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
0
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
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
0
Rejoignez-nous