OSはWinXP、VB6.0で開発しております。
WinXPの制限ユーザだとシステム日付は変更できませんが、APIなどを駆使して、それを変更できるようにはできないのでしょうか?
WinXPの情報がなかなか少なくて、どうもいい情報がみつかりません。
どなたか分かる方、よろしくお願い致します。
それができたら
セキュリティ上、問題ありかと思います。
それなので、実現するには、
1.変更する権限を持ったユーザでログイン
2.日付を変更
3.ユーザのログアウト
という感じになると思います。
ユーザのログインに関しては、
現在のユーザはログアウトしなくても
IDとパスワードを引数に渡して、
API を使ってできたと思います。
さっそくご回答ありがとうございます。
> それなので、実現するには、
> 1.変更する権限を持ったユーザでログイン
> 2.日付を変更
> 3.ユーザのログアウト
> という感じになると思います。
そ、それなんです。そこのとこのサンプルが欲しかったんです。
他のサイトで他のユーザで偽装ログインして時刻を変更するというサンプル(WinXPに対応しているとは書いてはありませんでしたが、、、)は見つけたのですが、そのサンプルもうまく動きませんでした。
もし、その辺のサンプルをお持ちであればお願いしたいのですが。。。
このような感じではないですか?動作保証は致しませんので、
実行して何かしらの不具合が発生しても、責任は負いかねます。
自分の責任で実行してみて下さい。
Option Explicit
Private Declare Function LogonUser Lib "advapi32.dll" Alias "LogonUserA" _
(ByVal lpszUsername As String, ByVal lpszDomain As String, _
ByVal lpszPassword As String, ByVal dwLogonType As Long, _
ByVal dwLogonProvider As Long, phToken As Long) As Long
Private Declare Function ImpersonateLoggedOnUser Lib "advapi32.dll" _
(ByVal hToken As Long) As Long
Private Declare Function RevertToSelf Lib "advapi32.dll" () As Long
Private Const LOGON32_LOGON_INTERACTIVE = 2&
Private Const LOGON32_PROVIDER_DEFAULT = 0&
Private Sub SampleProc(ByVal sUserID As String, _
ByVal sPassword As String, _
ByVal sDomain As String)
Dim lTokenHandle As Long
Dim lLogonType As Long
Dim lLogonProvider As Long
Dim bResult As Boolean
lLogonType = LOGON32_LOGON_INTERACTIVE
lLogonProvider = LOGON32_PROVIDER_DEFAULT
bResult = RevertToSelf()
bResult = LogonUser(sUserID, sDomain, sPassword, lLogonType, lLogonProvider, lTokenHandle)
bResult = ImpersonateLoggedOnUser(lTokenHandle)
'* ここに、日時を変更する処理を記述
'なんとかかんとか
bResult = RevertToSelf()
End Sub