मैं एक मैक्रो रिकॉर्ड करने के लिए एक डेल्फी मॉड्यूल है, जो एक सूत्र में एक हुक सेट तैयारी कर रहा हूँ के तहत विफल रहता है ERROR_ACCESS_DENIED
के साथ विफल रहता है। मुझे Google (this) में संदर्भित किया गया है (that)। बोली:SetWindowsHookEx Vista/Windows 7
एक कम विशेषाधिकार प्रक्रिया नहीं कर सकते हैं: ... उपयोग जर्नल हुक एक उच्च विशेषाधिकार प्रक्रिया की निगरानी करने के लिए। व्यवस्थापक के रूप में
- भागो आवेदन:
सफलता के बिना की कोशिश की। शायद धागा मुख्य थ्रेड की तुलना में कम विशेषाधिकारों के साथ शुरू हो गया है (हालांकि मैं 100% सुनिश्चित नहीं हूं)
कोड नमूना:
if LogonUser(PWideChar(sAdminUser), PWideChar(sDomain), PWideChar(sPwd),
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT, hToken) then
begin
if not ImpersonateLoggedOnUser(hToken) then
raise Exception.Create('Error impersonating the user');
end;
FHandleRec := SetWindowsHookEx(WH_JOURNALRECORD, FRecordProc, HInstance, 0);
LogonUser
और ImpersonateLoggedOnUser
त्रुटियों के बिना निष्पादित।
अन्य संभावनाओं की कोशिश करना:
- बारी यूएसी बंद स्थायी रूप से। यह मदद करता है, लेकिन मैं मॉड्यूल उपयोगकर्ताओं को ऐसा करने के लिए मजबूर नहीं कर सकता।
- एक मॉड्यूल ग्राहक एक एप्लिकेशन पर हस्ताक्षर करता है और इसे विश्वसनीय स्थान पर रखता है। कोशिश नहीं की, लेकिन यह उपयोगकर्ताओं के लिए मॉड्यूल उपयोग को मूल रूप से जटिल करता है।
- मॉड्यूल को कुछ हस्ताक्षरित एप्लिकेशन में रखें और EXE वितरित करें। वह कुछ मूल कार्यक्षमता तोड़ देगा।
क्या आप कृपया वीजा/विंडोज 7 के तहत हुक सेट कर रहे कोड को दिखा सकते हैं या कामकाजी समाधान का सुझाव दे सकते हैं?
आपको उपयोगकर्ता को ऊंचाई अनुमति के लिए पूछने के लिए एक मैनिफेस्ट एम्बेड करना होगा। मुझे संदेह है कि "मूल रूप से जटिल" श्रेणी में पड़ता है। –