मेरे पास मेरे प्रोग्राम का भाग है जिसके लिए व्यवस्थापकीय पहुंच की आवश्यकता होती है (सेटिंग्स जो एचकेएलएम में संग्रहीत सभी उपयोगकर्ताओं को प्रभावित करती हैं, और प्रशासनिक पहुंच तक सीमित हैं)।सुरक्षित रूप से यूएसी ऊंचाई के साथ आईपीसी कैसे करें?
मैं अपने सॉफ्टवेयर को बदल दिया है कि ऊंचाई से संकेत मिलता है के लिए आवश्यक है:
SHELLEXECUTEINFO shExecInfo;
shExecInfo.cbSize = sizeof(SHELLEXECUTEINFO);
shExecInfo.fMask = NULL;
shExecInfo.hwnd = NULL;
shExecInfo.lpVerb = L"runas";
shExecInfo.lpFile = L"myapp.exe";
shExecInfo.lpParameters = NULL;
shExecInfo.lpDirectory = NULL;
shExecInfo.nShow = SW_MAXIMIZE;
shExecInfo.hInstApp = NULL;
ShellExecuteEx(&shExecInfo);
मैं क्या था:
जवाब में मैं अपने निष्पादन योग्य शुरू करने के लिए है, जबकि ऊंचाई के लिए उत्साह जा रहा हूँ करने के लिए कमांड लाइन पर एक नामित पाइप का नाम पास कर दिया गया है, यह बता रहा है कि यह कहां से किया जा रहा है, इस पर निर्देश प्राप्त करने के लिए यह कहां से कनेक्ट हो सकता है:
myapp.exe /uac 6C844671-E262-46DD-939E-47517F105FB6
(हां, पाइप के नाम के रूप में GUID का उपयोग करके)।
इस पाइप के माध्यम सेमैं अपने ऊंचा क्लोन क्या डेटाबेस, जैसे कहते थे:
- क्या सर्वर डेटाबेस यह अपेक्षा की जाती है
- उपयोगकर्ता से कनेक्ट होने जा करने के लिए यह कहना चाहिए कि यह परिवर्तन
- बात कर रही है इसे
मेरी चिंता तब थी कि कोई भी myapp.exe
लॉन्च कर सकता है, और फिर इसे सभी प्रकार के अनुरोधों को खिला सकता है - चीज़ें जो मैं नहीं चाहता ओ कारण मैं इसे लॉन्च नहीं किया है, उदाहरण के लिए:
MaliciousProgram.exe:
ShellExecute("myapp.exe /uac HahaYouDoWhatISayNow")
मैं सूंडवाले बीटा के दौरान याद वहाँ एक Channel9 वीडियो, या एक लेख, यूएसी बारे में बात कर रहा था और आईपीसी (इंटर-प्रोसेस संचार) करने के गलत होने के खतरे।
मैं पहिया का फिर से आविष्कार नहीं करना चाहता, सुरक्षा गलतियों को पहले से हल कर चुका हूं। लेकिन मुझे यूएसी ऊंचाई के साथ आईपीसी करने के तरीके "सही" पर कोई मौजूदा मार्गदर्शन नहीं मिल रहा है।
क्या उन्होंने आईपीसी करने के लिए अस्थायी उन्नत क्रियाओं के लिए उन्नत उन्नत प्रक्रिया के साथ संवाद करने के लिए पैटर्न स्वीकार नहीं किया?
संपादित करें: uac
और ipc
टैग की संयुक्त अनुयायियों: 53
मुझे आश्चर्य है - सवाल पूछने के बाद से लगभग पांच साल हो गए हैं। क्या आपने कभी एक संतोषजनक समाधान के साथ समाप्त किया? –