修改時間,user權限受限無法修改 |
尚未結案
|
lisahsu7488
一般會員 發表:9 回覆:3 積分:2 註冊:2007-10-02 發送簡訊給我 |
在系統一執行會去
使用ShellExecute(application.Handle, nil, 'cmd.exe', PChar('/C time ' sTime), nil, SW_HIDE); 和setlocaltime 雖然它可以修改時間,但卻有權限上的問題… 但是因某些原因,不能開放給user更改時間,所以想請問各位大大是否有更好的方法,謝謝! 昨天,又另外試了SETSYSTEMTIME可是,執行完全沒反應…不知道是哪出問題了,可以再麻煩大大幫忙一下嗎?謝謝 感謝christie大大的幫忙,不過現在是卡在權限執行了~"~ 有參考更改權限的文章,但放放gest權限上依然是無法執行會出現一個error→並非所有參考到的特殊權限都指定給呼叫者 const SE_SYSTEMTIME_NAME = 'SeSystemtimePrivilege'; var bsql:string; MyST:TSystemTime; hToken: THandle; tkp, PrevTokenPriv: TTokenPrivileges; luid: TLargeInteger; ReturnLength: DWORD; begin if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin if OpenProcessToken(GetCurrentProcess, TOKEN_ADJUST_PRIVILEGES or TOKEN_QUERY, hToken) then begin try if not LookupPrivilegeValue(nil, SE_SYSTEMTIME_NAME, luid) then Exit; tkp.PrivilegeCount := 1; tkp.Privileges[0].luid := luid; tkp.Privileges[0].Attributes := SE_PRIVILEGE_ENABLED; if not AdjustTokenPrivileges(hToken, False, tkp, SizeOf(TTOKENPRIVILEGES), PrevTokenPriv, ReturnLength) then Exit; if (GetLastError <> ERROR_SUCCESS) then begin raise Exception.Create(SysErrorMessage(GetLastError)); Exit; end; finally CloseHandle(hToken); end; end; end; bsql:='select current timestamp as time from test'; query1.Close; query1.SQL.Clear; query1.SQL.Text:=bsql; query1.open; if query1.RecordCount<>0 then begin with MyST do begin wYear:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),1,4)); wMonth:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),6,2)); wDay:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),9,2)); DayOfWeek(now); wHour:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),12,2))-8; wMinute:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),15,2)); wSecond:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),18,2)); end; if not windows.SetsystemTime(myst) then showmessage('error!'); end else begin edit1.Text:='error'; end; end; **我的名言☆愈受挫愈努力☆也許道路上會有很多的阻礙,當解決後也會更成長^^~ 編輯記錄
|
christie
資深會員 發表:30 回覆:299 積分:475 註冊:2005-03-25 發送簡訊給我 |
Hi, Try THIS:
procedure TForm1.FormClick(Sender: TObject); VAR ld_DBTime : TDateTime; ld_SysTime : TSystemTime; begin ld_DBTime:=strtodatetime('2008/12/12 11:27:55'); DateTimeToSystemTime(ld_DBTime, ld_SysTime); SetLocalTime(ld_SysTime); end; ===================引 用 lisahsu7488 文 章=================== 在系統一執行會去 使用ShellExecute(application.Handle, nil, 'cmd.exe', PChar('/C time ' sTime), nil, SW_HIDE); 和setlocaltime 雖然它可以修改時間,但卻有權限上的問題… 但是因某些原因,不能開放給user更改時間,所以想請問各位大大是否有更好的方法,謝謝! 昨天,又另外試了SETSYSTEMTIME可是,執行完全沒反應…不知道是哪出問題了,可以再麻煩大大幫忙一下嗎?謝謝 Var MyST:TSystemTime; begin bsql:='select current timestamp as time from test'; query1.Close; query1.SQL.Clear; query1.SQL.Text:=bsql; query1.open; with MyST do begin wYear:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),1,4)); wMonth:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),6,2)); wDay:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),9,2)); DayOfWeek(now); wHour:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),12,2)); wMinute:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),15,2)); wSecond:=strtoint(copy(formatdatetime('yyyy/mm/dd hh:nn:ss',query1.FieldValues['time']),18,2)); end; SetSystemTime(myst); end;
------
What do we live for if not to make life less difficult for each other? |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |