Newsgroup: it.comp.lang.visual-basic
Titolo: VB NET AdjustTokenPrivileges e Windows 7 XP

Ho la necessita di dover o poter cambiare l'ora del sistema in XP o Windows 
7 con la funzione
microsoft.visualbasic.TimeofDay
ma va bene anche
DateAndTime.TimeString = New TimeSpan(10, 0, 0).ToString
DateAndTime.Today = New Date(2010, 1, 15)
se apro il programma come amministratore (tasto dx del mouse) il tutto 
funziona perfettamente e la data viene aggiornata secondo i parametri 
passati e nella taskbar dove � posizionato l'orologio viene immediatamente 
riflessa la nuova data impostata.
il problema avviene nel momento in cui entri come utente di cui uno solo 
registrato e quindi anche amministratore. Il programma risponde con 
un'eccezione dicendo che non ci sono i permessi adatti affinche si possa 
modificare la data e l'ora del sistema
Leggendo e rileggendo ho visto che vi � la possibilit� di poter cambiare i 
privilegi di un'utente con una funzione, ma sinceramente mi sono perso tra 
le varie strutture da dichiarare e i vari parametri della funzione
in un modulo ho dichiarato quanto segue
 Structure LUID
        Dim LowPart As String
        Dim HighPart As Integer
End Structure
    Structure LUID_AND_ATTRIBUTES
        Dim Luid As LUID
        Dim Attributes As String
    End Structure
    Structure TOKEN_PRIVILEGES
        Dim privilegecount As String
        Dim Privileges() As LUID_AND_ATTRIBUTES
    End Structure
    Declare Function AdjustTokenPrivileges Lib "advapi32.dll" (ByVal 
TokenHandle As IntPtr, ByVal DisableAllPrivileges As Boolean, _
                    ByRef NewState As TOKEN_PRIVILEGES, ByVal BufferLength 
As Integer, ByRef PreviousState As TOKEN_PRIVILEGES, _
                    ByRef ReturnLength As IntPtr) As Boolean
a questo punto mi perdo e non capisco piu niente di cosa passare e di cosa 
vuole la funzione. Chi mi da una mano???
 

 ha scritto nel messaggio 
news:gWaFn.174111$813....@tornado.fastwebnet.it...

Non credo che possa funzionare. Se un processo � stato lanciato con 
privilegi bassi, non ha modo di "autoelevarseli".
L'unico modo � quello di forzare il programma ad essere eseguito con 
privilegi elevati, previa conferma da parte dell'utente all'avvio ("admin 
approval mode"), e questo lo si ottiene distribuendo insieme all'exe anche 
un opportuno file manifest.
Puoi dare un'occhiata a questo esempio (� in C#, ma il concetto � 
assolutamente identico in VB):
http://www.codeproject.com/Articles/66259/Requesting-Admin-Approval-at-Application-Start.aspx
Bye
Raf 

 privilegi bassi, non ha modo di "autoelevarseli".
Volendo si pu� fare un batch che simula il RunAs, ma non so se funzioni in
questo caso, e dovresti sapere user/psw da usare.

"Andrea [Work]" <andrea.isw...@gmail.invalid> ha scritto nel 
messaggio news:1oxk1e5o3xy3x$.1cgrw0wfmgjim$.dlg@40tude.net...

A parte che nel caso descritto da Enzo non serve sapere user/pass perch� 
l'utente � gi� amministratore, eventualmente li si pu� chiedere facendo 
apparire il relativo dialogo di sistema.
In tal caso si pu� usare l'API ShellExecuteEx con verb "runas" per lanciare 
un comando del tipo "cmd32.exe /c time hh:mm:ss".
Cos�, se l'utente � admin (e se il s.o. � Vista o 7), esce il classico 
"elevation prompt", altrimenti il dialogo di richiesta user e pass.
Bye
Raf 

 apparire il relativo dialogo di sistema.
Si avevo letto male.