2008-09-26 6 views
5

मैं कैसे निर्धारित कर सकता हूं कि मेरे पास इंट्रानेट में रिमोट मशीन पर लिखने की अनुमति है # सी।मैं प्रोग्रामेटिक रूप से कैसे निर्धारित कर सकता हूं कि मेरे पास .N # में C# का उपयोग करके लिखने के विशेषाधिकार हैं या नहीं?

उत्तर

6

सरल उत्तर यह कोशिश करना और देखना होगा। विंडोज सुरक्षा एपीआई दिल की बेहोशी के लिए नहीं हैं, और संभव है कि अनुमतियां देखने की अनुमति के बिना आपके पास लेखन अनुमति हो!

3

इस मंच पोस्ट को देखें।

http://bytes.com/forum/thread389514.html

यह एक फ़ाइल के लिए एसीएल अनुमतियों की एक सूची प्राप्त करने के लिए System.Security.AccessControl नाम स्थान में वस्तुओं का उपयोग कर का वर्णन है। यह केवल .NET 2.0 और उच्चतर में उपलब्ध है। मुझे लगता है कि यह भी मानता है कि आपके पास एक एसएमबी नेटवर्क है। मुझे यकीन नहीं है कि यदि आप एक गैर-विंडोज नेटवर्क का उपयोग कर रहे थे तो यह क्या करेगा।

यदि आप .NET 2.0 या उच्चतर पर नहीं हैं, तो यह सामान्य pInvoke और Win32 API जैज़ है।

1

स्कॉटकून विंडोज एसीएल अनुमतियों की जांच के बारे में लिखता है। आप सीएएस (कोड एक्सेस सिक्योरिटी) का उपयोग कर प्रबंधित कोड अनुमतियों को भी देख सकते हैं। यह अनुमतियों को प्रतिबंधित करने की एक .Net विशिष्ट विधि है। नोट, यदि उपयोगकर्ता के पास लिखने की अनुमति नहीं है तो कोड में कभी भी लिखने की अनुमति नहीं होगी (भले ही सीएएस कहता है) - दो जीत के बीच सबसे अधिक प्रतिबंधक अनुमतियां।

सीएएस उपयोग करने में बहुत आसान है - आप घोषणात्मक विशेषताओं को भी अपनी विधियों की शुरुआत भी जोड़ सकते हैं। आप पढ़ सकते हैं और अधिक से MSDN

4

वहां रहे हैं भी, सबसे अच्छा और सबसे विश्वसनीय समाधान मैंने पाया था यह:

bool hasWriteAccess = true; 
string remoteFileName = "\\server\share\file.name" 

try 
{ 
    createRemoteFile(remoteFileName); 
} 
catch (SystemSecurityException) 
{ 
    hasWriteAccess = false; 
} 

if (File.Exists(remoteFileName)) 
{ 
    File.Delete(remoteFileName); 
} 

return hasWriteAccess; 
+2

याद रखें कि यह संभव है एक विंडोज़ प्रयोक्ता किसी फ़ाइल या फ़ोल्डर के लिए अनुमति लिखने के लिए लेकिन इसके लिए अनुमति हटाने की अनुमति नहीं है (लिखने के साथ लेकिन संशोधित नहीं) – hromanko

संबंधित मुद्दे

 संबंधित मुद्दे