begin process at 2012 02 13 08:50:38
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBScript

 > 

Passer de VB à VBScript


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Passer de VB à VBScript

vendredi 4 août 2006 à 15:06:13 | Passer de VB à VBScript

flyingfish

Bonjour,

J'ai le code ci-dessous qui fonctionne très bien avec VB (fonction sans interface, pour la lancer sur un serveur), mais je n'arrive pas à exécuter l'exe sur mon serveur.
J'aurai don besoin de faire la même chose en VBScript, mais je ne sais pas du tout comment faire...
Mon but est de pouvoir appeler mon script depuis une dll écrite en C++ et tournant sur mon serveur.
MErci de de votre aide !

Pour info, le programme VB permet de modifier le propriétaire d'un fichier physique.

Merci d'avance pour votre aide.

Oliv.

Option Explicit

' Global constants we must use with security descriptor
Private Const SECURITY_DESCRIPTOR_REVISION = 1
Private Const OWNER_SECURITY_INFORMATION = 1&

' Access Token constants
Private Const TOKEN_ASSIGN_PRIMARY = &H1
Private Const TOKEN_DUPLICATE = &H2
Private Const TOKEN_IMPERSONATE = &H4
Private Const TOKEN_QUERY = &H8
Private Const TOKEN_QUERY_SOURCE = &H10
Private Const TOKEN_ADJUST_PRIVILEGES = &H20
Private Const TOKEN_ADJUST_GROUPS = &H40
Private Const TOKEN_ADJUST_DEFAULT = &H80
Private Const TOKEN_ALL_ACCESS = TOKEN_ASSIGN_PRIMARY _
+ TOKEN_DUPLICATE + TOKEN_IMPERSONATE + TOKEN_QUERY _
+ TOKEN_QUERY_SOURCE + TOKEN_ADJUST_PRIVILEGES _
+ TOKEN_ADJUST_GROUPS + TOKEN_ADJUST_DEFAULT
Private Const ANYSIZE_ARRAY = 1

' Token Privileges constants
Private Const SE_RESTORE_NAME = "SeRestorePrivilege"
Private Const SE_PRIVILEGE_ENABLED = 2&

' ACL structure
Private Type ACL
AclRevision As Byte
Sbz1 As Byte
AclSize As Integer
AceCount As Integer
Sbz2 As Integer
End Type

Private Type SECURITY_DESCRIPTOR
Revision As Byte
Sbz1 As Byte
Control As Long
Owner As Long
Group As Long
Sacl As ACL
Dacl As ACL
End Type

' Token structures
Private Type LARGE_INTEGER
lowpart As Long
highpart As Long
End Type

Private Type LUID
lowpart As Long
highpart As Long
End Type

Private Type LUID_AND_ATTRIBUTES
pLuid As LUID
Attributes As Long
End Type

Private Type TOKEN_PRIVILEGES
PrivilegeCount As Long
Privileges(ANYSIZE_ARRAY) As LUID_AND_ATTRIBUTES
End Type

' Win32 API calls
Private Declare Function LookupAccountName Lib "advapi32.dll" _
Alias "LookupAccountNameA" (ByVal lpSystemName As String, _
ByVal lpAccountName As String, Sid As Byte, cbSid As Long, _
ByVal ReferencedDomainName As String, _
cbReferencedDomainName As Long, peUse As Integer) As Long

Private Declare Function InitializeSecurityDescriptor _
Lib "advapi32.dll" (pSecurityDescriptor As SECURITY_DESCRIPTOR, _
ByVal dwRevision As Long) As Long

Private Declare Function SetSecurityDescriptorOwner _
Lib "advapi32.dll" (pSecurityDescriptor As SECURITY_DESCRIPTOR, _
pOwner As Any, ByVal bOwnerDefaulted As Long) As Long

Private Declare Function SetFileSecurity Lib "advapi32.dll" _
Alias "SetFileSecurityA" (ByVal lpFileName As String, _
ByVal SecurityInformation As Long, _
pSecurityDescriptor As SECURITY_DESCRIPTOR) As Long

Private Declare Function OpenProcessToken Lib "advapi32.dll" _
(ByVal ProcessHandle As Long, ByVal DesiredAccess As Long, _
TokenHandle As Long) As Long

Private Declare Function GetCurrentProcess Lib "kernel32" () As Long

Private Declare Function LookupPrivilegeValue Lib "advapi32.dll" _
Alias "LookupPrivilegeValueA" (ByVal lpSystemName As String, _
ByVal lpName As String, lpLuid As LUID) As Long

Private Declare Function AdjustTokenPrivileges Lib "advapi32.dll" _
(ByVal TokenHandle As Long, ByVal DisableAllPrivileges As Long, _
NewState As TOKEN_PRIVILEGES, ByVal BufferLength As Long, _
ByVal PreviousState As Long, ByVal ReturnLength As Long) As Long

Private Declare Function CloseHandle Lib "kernel32" _
(ByVal hObject As Long) As Long

Public Function ChangeOwnerOfFile(FileName As String, _
OwnerAccountName As String)

' variables for the LookupAccountName API Call
Dim Sid(255) As Byte ' Buffer for the SID
Dim nBufferSize As Long ' Length of SID Buffer
Dim szDomainName As String * 255 ' Domain Name Buffer
Dim nDomain As Long ' Length of Domain Name buffer
Dim peUse As Integer ' SID type
Dim Result As Long ' Return value of Win32 API call

' variables for the InitializeSecurityDescriptor API Call
Dim SecDesc As SECURITY_DESCRIPTOR
Dim Revision As Long

Enable_Privilege (SE_RESTORE_NAME)

nBufferSize = 255
nDomain = 255

Result = LookupAccountName(vbNullString, OwnerAccountName, _
Sid(0), nBufferSize, szDomainName, nDomain, peUse)
If (Result = 0) Then
'MsgBox "LookupAccountName failed with error code " _
'& Err.LastDllError
Exit Function
End If

Result = InitializeSecurityDescriptor(SecDesc, _
SECURITY_DESCRIPTOR_REVISION)
If (Result = 0) Then
'MsgBox "InitializeSecurityDescriptor failed with error code " _
'& Err.LastDllError
Exit Function
End If

Result = SetSecurityDescriptorOwner(SecDesc, Sid(0), 0)
If (Result = 0) Then
'MsgBox "SetSecurityDescriptorOwner failed with error code " _
'& Err.LastDllError
Exit Function
End If

Result = SetFileSecurity(FileName, OWNER_SECURITY_INFORMATION, _
SecDesc)
If (Result = 0) Then
'MsgBox "SetFileSecurity failed with error code " _
'& Err.LastDllError
Exit Function
Else
'MsgBox "Owner of " & FileName & " changed to " _
'& OwnerAccountName
End If

Disable_Privilege (SE_RESTORE_NAME)

End Function

Public Function Enable_Privilege(Privilege As String) As Boolean
Enable_Privilege = ModifyState(Privilege, True)
End Function

Public Function Disable_Privilege(Privilege As String) As Boolean
Disable_Privilege = ModifyState(Privilege, False)
End Function

Public Function ModifyState(Privilege As String, _
Enable As Boolean) As Boolean

Dim MyPrives As TOKEN_PRIVILEGES
Dim PrivilegeId As LUID
Dim ptrPriv As Long ' Pointer to Privileges Structure
Dim hToken As Long ' Token Handle
Dim Result As Long ' Return Value

Result = OpenProcessToken(GetCurrentProcess(), _
TOKEN_ADJUST_PRIVILEGES, hToken)
If (Result = 0) Then
ModifyState = False
'MsgBox "OpenProcessToken failed with error code " _
'& Err.LastDllError
Exit Function
End If

Result = LookupPrivilegeValue(vbNullString, Privilege, PrivilegeId)
If (Result = 0) Then
ModifyState = False
'MsgBox "LookupPrivilegeValue failed with error code " _
'& Err.LastDllError
Exit Function
End If

MyPrives.Privileges(0).pLuid = PrivilegeId
MyPrives.PrivilegeCount = 1
If (Enable) Then
MyPrives.Privileges(0).Attributes = SE_PRIVILEGE_ENABLED
Else
MyPrives.Privileges(0).Attributes = 0
End If

Result = AdjustTokenPrivileges(hToken, False, MyPrives, 0, 0, 0)
If (Result = 0 Or Err.LastDllError <> 0) Then
ModifyState = False
'MsgBox "AdjustTokenPrivileges failed with error code " _
'& Err.LastDllError
Exit Function
End If

CloseHandle hToken

ModifyState = True

End Function


Sub Main()
    Dim Fname As String
    Dim User As String
    Dim rc As Boolean
        
    Dim cmdLine() As String
    Dim tmpArg As Variant
    Dim i As Integer
    i = 1
cmdLine() = Split(Command, ",")
For Each tmpArg In cmdLine()
'MsgBox tmpArg
If i = 1 Then
    Fname = tmpArg
Else
    User = tmpArg
End If
i = i + 1
Next


rc = ChangeOwnerOfFile(Fname, User)
End
End Sub

 

vendredi 4 août 2006 à 15:30:59 | Re : Passer de VB à VBScript

Dolphin Boy

Membre Club
Salut, as-tu fait une installation sur la machine qui doit exécuter ton exe ?
vendredi 4 août 2006 à 15:31:59 | Re : Passer de VB à VBScript

darunia

Conseil : traduit le C++ !

A ma connaissance, y a pas moyen d'exploiter le win32 en VBS

D@runia
vendredi 4 août 2006 à 15:42:44 | Re : Passer de VB à VBScript

flyingfish

Non, pas d'installation de faite... je poste simplement mon exe dans un répertoire.

 

Pour le C++, j'ai pas réussi à le faire... il me plante toujours mon application cliente....

Mais je suis ouvert à toute proposition en C++ !

 

Merci










    /\_    /\ 
  /      \/    \

vendredi 4 août 2006 à 15:48:17 | Re : Passer de VB à VBScript

darunia

Il te plante ?!?
Pourtant c'est quasiment que des appels à du Win32, c'est beaucoup plus facile en C++ (enfin je pense

D@runia
vendredi 4 août 2006 à 15:51:06 | Re : Passer de VB à VBScript

flyingfish

Malheureusement je maitrise tellement peu le C++ ...

ma dll est générée automatiquement...
je peux juste y ajouter un script (en c ou en vb, égal)...

mais je me perd un peu.












    /\_    /\ 
  /      \/    \

vendredi 4 août 2006 à 15:52:52 | Re : Passer de VB à VBScript

mortalino

Membre Club


Salut,

pour info, dans MS Excel, menu Outils, Macro..., VBScript.
Tu as une aide (comme dans Excel) relativement complête. N'hésite pas à t'aider de ce support.

@++

   Mortalino
Le mystérieux chevalier, "Provençal, le Gaulois"
vendredi 4 août 2006 à 15:57:55 | Re : Passer de VB à VBScript

darunia

1ere question : " ma dll est générée automatiquement... " Comment ça ?
2e question : pourquoi tu ne fais pas tourner ton exe VB sur le serveur ? (si ça marche pas, il te manque peut etre le runtime vb)

D@runia
vendredi 4 août 2006 à 16:12:12 | Re : Passer de VB à VBScript

flyingfish

c'est une application qui génère le code C++...

J'aimerai bien faire tourner mon exe VB sur le serveur... mais quand je lance le Shell Execute, il me retourne une erreur...










    /\_    /\ 
  /      \/    \

vendredi 4 août 2006 à 16:41:10 | Re : Passer de VB à VBScript

Dolphin Boy

Membre Club
2 autres question :
c'est une application qui génère le code C++ : laquelle ?
il me retourne une erreur : laquelle ?

1 2

Cette discussion est classée dans : long, function, string, result, token


Répondre à ce message

Sujets en rapport avec ce message

Traduire un code VB en VB Script pour une page ASP ou comment utiliser une fonction inclue dans un dll ? [ par Gbrissot ] Traduire un code VB en VB Script pour une page ASP du code suivant ou comment utiliser une fonction inclue dans un dll ?Declare Function wu_GetUserNam Treeview,icone, et transparence ... [ par Warning ] Voila mon probleme:J'ai créer cette fonction, mais j'aimerais pouvoir récupérer l'icone du fichier dans un TreeView, avec un fond transparent, j'ai ri Utiliser les fonctions d'une DLL chargée dynamiquement [ par Drakkhen ] Si on se sert d'une DLL en la chargeant dynamiquement, donc sans utiliser "Declare Function"...On utilise donc "LoadLibrary" et "GetProcAddress" pour fermeture d' un processus sous NT4 [ par cobaltone ] Bonjour,j'utilise actuellement le module suivant ( voir en bas de page ) pour fermer le "Processus" explorer mais la ligne suivante me pose probleme:  Enregistrer dans un fichier INI [ par piep14 ] Bonjour, j'aimerais écrire dans un fichier INI. Jj'ai donc trouvé dans la FAQ la méthode a appliquer mais je n'arrive pas à l'utiliser !!! J'ai fai Problème avec Getprivateprofilestring [ par Julien237 ] Bonjour,je viens tout juste de passer à VB.Net et j'ai manifestement quelques problèmes d'adaptation. Voici mon code : Public<FONT s .NET problème avec GetClassName [ par Hades53 ] Bonjour, j'ai un petit problème en VB .NET, la fonction Win32 GetClassName bogue, apparement, d'autre fonctions comme GetWindowText (utilisé dans le m Problème de code retour avec Wininet [ par angelot ] Bonjour,J'utilise Wininet pour effectuer des commandes FTP. Tout se passe bien jusqu'à la commande FTP FtpCreateDirectory qui me renvoie le code répon NtOpenKey [ par draluorg ] Salut a tous, Je ne parviens pas a utiliser l'api NtOpenKey, j'ai essaye dans tous les sens et rien :( J'ai soit l'erreur Memoire Insufisante soit [vb2005] Utilisation Api !! [ par lex1111 ] Bonjour, j'essaye d'utiliser les api suivantes dans mon prog en VB2005 pour recuperer le code source html d'une page web :     Private Declare Functio


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,513 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales