Dossier Systeme32

Résolu
cs_simon22 Messages postés 161 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 20 août 2015 - 26 oct. 2006 à 19:55
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 27 oct. 2006 à 06:50
bonjour, je cherche un algorytme simple (le plus possible^^) qui me permette de trouver le dossier System32 car j'ai un programe qui utilise un fichier se trouvant a l'interieur mais, vue que ce repertoir peu avoir des emplacements varier (celon le disque dur ou windows c'est installer et le nom qu'il porte) il me faut une fonction ou je ne sais pas quoi pour s'avoir dans tout les cas ou se trouve le dossier System32

merci D'avence^^

simon22

8 réponses

cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 oct. 2006 à 20:35
Utilise l'API Win32 GetSystemDirectory

Voila une exmple tiré de l'APIGuide :

Private Declare Function GetSystemDirectory Lib"kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Private Sub Form_Load()
'KPD-Team 1998
'URL: http://www.allapi.net/
'E-Mail: KPDTeam@Allapi.net
Dim sSave As String, Ret As Long
'Create a buffer
sSave = Space (255)
'Get the system directory
Ret = GetSystemDirectory(sSave, 255)
'Remove all unnecessary chr$(0)'s
sSave = Left$ (sSave, Ret)
'Show the windows directory
MsgBox"Windows System directory: " + sSave
End Sub

---- Sevyc64  (alias Casy) ----<hr size ="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
3
cs_simon22 Messages postés 161 Date d'inscription vendredi 8 octobre 2004 Statut Membre Dernière intervention 20 août 2015
26 oct. 2006 à 21:07
je te remercie sincerement, cet fonction va mètre tres utile!

simon22
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
26 oct. 2006 à 21:11
Bonsoir,
Perso, j'utilise l'API GetWindowsDirectory. C'est exactement le même principe.
Quand on a le répertoire de Windows, System32 est en dessous



Private Declare Function GetWindowsDirectory Lib "kernel32" Alias "GetWindowsDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long
Option Explicit

Private Sub Command1_Click()
Dim cBuffer As String, BufferLen As Long, nRet As Long
cBuffer = Space(255)
nRet = GetWindowsDirectory(cBuffer, Len(cBuffer))
Debug.Print Left(cBuffer, InStr(cBuffer, Chr(0)) - 1)
End Sub


Jessica


 
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
26 oct. 2006 à 21:12
Je préfère en ce qui me concerne, me méfier des "backslash"
l'api utilisée est la même : GetSystemDirectory... mais je prends des précautions et :

Private Declare Function GetSystemDirectoryA Lib "kernel32" (ByVal lpBuffer As String, ByVal nSize As Long) As Long




Private Sub Command1_Click()
  MsgBox GetSystemDirectory
End Sub


Private Function GetSystemDirectory() As String
  Dim z0 As String, I As Integer  I GetSystemDirectoryA("", 0): z0 Space(I)
  Call GetSystemDirectoryA(z0, I)
  GetSystemDirectory = Trim(z0)
  GetSystemDirectory = AddBackslash(Left$(z0, I - 1))
End Function


Private Function AddBackslash(z0 As String) As String
  If Len(z0) > 0 Then
    If Right$(z0, 1) <> "" Then AddBackslash = z0 + "" Else AddBackslash = z0
  Else
    AddBackslash = ""
  End If
End Function
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_casy Messages postés 7741 Date d'inscription mercredi 1 septembre 2004 Statut Membre Dernière intervention 24 septembre 2014 40
26 oct. 2006 à 21:19
Jessica -->
"...Quand on a le répertoire de Windows, System32 est en dessous..."
Oui sauf que le répertoire système ne s'appelle pas forcément System32, ça peut très bien etre System (cas de Win95 et certaine fois Win98)

jmfmarques -->
Tout dépend ce que tu veux faire. Si tu souhaite avoir juste le nom du répertoire, normalement, il n'y a pas de backslash à la fin.
Si tu veux l'utiliser pour construire un chemin, il faut le backslash. A ce moment là, à chacun de voir s'il le rajoute dans cette fonction comme toi, ou s'il le rajoute lors de la construction du chemin. Perso, j'ai tendance à utiliser la seconde méthode. Chacun ses gouts.

---- Sevyc64  (alias Casy) ----<hr size="2" width="100%" /># LE PARTAGE EST NOTRE FORCE #
0
JessicaR44 Messages postés 116 Date d'inscription mardi 8 août 2006 Statut Membre Dernière intervention 29 septembre 2013
26 oct. 2006 à 21:40
Bonsoir
casy : "le répertoire système ne s'appelle pas forcément System32, ça peut très bien etre System"
Je viens de vérifier, et tu as tout à fait raison. Je me rallie donc à ta solution.
Je n'ai jamais eu de problèmes, car tous mes progs tournent sous XP ou Win2000
Mais par précaution, je vais modifier ma lib.
Amicalement
Jessica
0
Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
26 oct. 2006 à 22:42
ok avec casy...

note pour Jessica, au passage, pas besoin d'API :

? environ$("windir")

Renfield
Admin CodeS-SourceS- MVP Visual Basic
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
27 oct. 2006 à 06:50
 Bonjour à tous....

je me rallie à Renfield (valable sous XP ou Win2000)

Dim WshShell : Set WshShell = WScript.CreateObject("WScript.Shell")
WScript.Echo WshShell.ExpandEnvironmentStrings("%WinDir%" & "\system32")
Set WshShell = Nothing

jean-marc
0
Rejoignez-nous