Как я могу программно определить, есть ли у меня полномочия записи с помощью C# в .NET?

Это возможное решение:

//to create a joined DF with column "col_name" 
//if columns "name" and "uuid" contains different values: 
var output = df1.join(df2, df1.col("id_sk")===df2.col("id_sk"))
                .where(df1.col("name")=!=df2.col("name") || df1.col("uuid")=!=df2.col("uuid"))
                .withColumn("col_name", when(df1.col("name")=!=df2.col("name"), "name")
                                       .otherwise(when(df1.col("uuid")=!=df2.col("uuid"), "uuid")))

//to create the new "col_values" column 
//containing concatenated values:
output = output.withColumn("col_values", when(output.col("col_name")==="name", when(df1.col("name")=!=df2.col("name"), concat_ws(",", df1.col("name"), df2.col("name")) ))
                                        .when(output.col("col_name")==="uuid", when(df1.col("uuid")=!=df2.col("uuid"), concat_ws(",", df1.col("uuid"), df2.col("uuid")) )))

output = output.select(df1.col("id_sk"), output.col("col_name"), output.col("col_values"))
+-----+--------+----------+
|id_sk|col_name|col_values|
+-----+--------+----------+
|    2|    name|    b,b-up|
|    3|    uuid|  30,30-up|
+-----+--------+----------+

Обратите внимание, что я не думаю, что это наилучшее из возможных решений, а просто отправная точка (например, что если в одной строке более одного столбца? ценности?).

5
задан Kev 26 September 2008 в 00:34
поделиться

4 ответа

Простой ответ должен был бы попробовать его и видеть. API безопасности Windows не для слабонервных и могут быть возможными, у Вас есть разрешение записи, не имея разрешения просмотреть полномочия!

6
ответ дан 18 December 2019 в 13:21
поделиться

Там также, лучшее и наиболее надежное решение, которое я нашел, было этим:

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;
4
ответ дан 18 December 2019 в 13:21
поделиться

ScottKoon является записью о проверке полномочий окон ACL. Можно также проверить полномочия управляемого кода с помощью CAS (Безопасность доступа к коду). Это - .NET определенный метод ограничения полномочий. Отметьте, если у пользователя не будет полномочий записи затем, то код никогда не будет иметь полномочий записи (даже если CAS скажет, что делает) - самые строгие полномочия между этими двумя побеждают.

CAS довольно прост в использовании - можно даже добавить, что описание приписывает Вас запуск Ваших методов. Можно читать больше в MSDN

1
ответ дан 18 December 2019 в 13:21
поделиться

Проверьте это сообщение форума.

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

Это описывает использование объектов в Системе. Безопасность. Пространство имен AccessControl для получения списка полномочий ACL для файла. Это только доступно в.NET 2.0 и выше. Я думаю, что это также предполагает, что у Вас есть сеть SMB. Я не уверен, что это сделало бы при использовании сети не-Windows.

Если Вы не находитесь на.NET 2.0 или выше, это - обычный pInvoke и Win32 джаз API.

3
ответ дан 18 December 2019 в 13:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: