पृष्ठभूमि: मैं (जेड :) नेटवर्क डिस्क पर फ़ाइलों से पढ़नेनेटवर्क डिस्क पर एक फ़ाइल को एक्सेस करना
यह मेरे कार्यालय डोमेन महान काम करता है कि एक आवेदन पत्र है, लेकिन यह पर काम नहीं करता साइट (एक अलग डोमेन में)। जहां तक मैं डोमेन उपयोगकर्ताओं और नेटवर्क ड्राइव को बता सकता हूं, वैसे ही, मेरे पास ग्राहक डोमेन में उपयोगकर्ताओं आदि तक पहुंच नहीं है।
जब मैं नेटवर्क ड्राइव तक नहीं पहुंच पाया तो मुझे लगा कि मुझे उपयोगकर्ता के लिए टोकन की आवश्यकता है।
[DllImport("advapi32.dll", SetLastError = true, CharSet = CharSet.Unicode)]
public static extern bool LogonUser(String lpszUsername, String lpszDomain, String lpszPassword, int dwLogonType, int dwLogonProvider, ref IntPtr phToken);
...
const string userName = "USER";
const string pass = "PASS";
const string domainName = "VALIDDOMAIN.local" //tried with valid domain name and with null, same result
const int LOGON32_PROVIDER_DEFAULT = 0;
const int LOGON32_LOGON_INTERACTIVE = 2;
IntPtr tokenHandle = new IntPtr(0);
bool returnValue = LogonUser(userName, domainName, pass,
LOGON32_LOGON_INTERACTIVE, LOGON32_PROVIDER_DEFAULT,
ref tokenHandle);
if (!returnValue)
throw new Exception("Logon failed.");
WindowsImpersonationContext impersonatedUser = null;
try
{
WindowsIdentity wid = new WindowsIdentity(tokenHandle);
impersonatedUser = wid.Impersonate();
}
finally
{
if (impersonatedUser != null) impersonatedUser.Undo();
}
अब यहाँ दिलचस्प/अजीब हिस्सा है: यह कैसे मैं उपयोगकर्ता impersionate है। मेरे नेटवर्क में एप्लिकेशन पहले से ही नेटवर्क ड्राइव तक पहुंच सकता है, और यदि मैं सक्रिय उपयोगकर्ता का प्रतिरूपण करने का प्रयास करता हूं (एक ही डोमेन सहित एक ही उपयोगकर्ता), तो यह नेटवर्क ड्राइव तक पहुंचने में सक्षम नहीं होगा।
यह मुझे असहाय छोड़ देता है क्योंकि अब मुझे नहीं पता कि क्या काम करता है और क्या नहीं, और इस बिंदु पर, क्या यह साइट पर काम करेगा?
मुझे क्या याद आ रही है?
संपादित करें: के रूप में मैं बिना होगा मैं मान्य डोमेन नाम में प्रवेश की कोशिश की है और यह काम नहीं किया है, ताकि बाद मैं अशक्त डालने का प्रयास किया एक ही उपयोगकर्ता नाम पाने के लिए: मैं इस जबकि मूल रूप से सवाल पूछने लिखना भूल यह कोड (चूंकि यह हमारे डोमेन में डिफ़ॉल्ट रूप से काम करता है)। इससे मदद नहीं मिली, और इस तरह डोमेन = शून्य; इस सवाल में समाप्त हो गया।
मुझे लगता है कि सुपरसियर लोग रिवर्स पर बहस करेंगे (क्योंकि इसमें कोड है)। – Codesleuth
आप इस कोड को निष्पादित करने वाले खाते को ड्राइव तक पहुंच पढ़ने के लिए क्यों नहीं देते? फिर आपका कोड यह हो जाता है: 'File.ReadAllBytes (filePath); ' – ChaosPandion
मैंने एक बार एक ही प्रश्न पूछा; आप इसे उपयोगी पा सकते हैं: http://stackoverflow.com/questions/659013/accessing-a-shared-file-unc-from-a-remote-non-trusted-domain-with-credentials – Randolpho