[WPF] WPF FolderBrowserDialog 네트워크 드라이브 보여주기
- C#/WPF
- 2021. 10. 9. 17:34
소개
- 안녕하세요. 오늘은 WPF에서 FolderBrowerDialog 를 이용하여 네트워크 드라이브로 설정된 경로를 보여주는 방법에 대해서 알려 드리려고 합니다.
- 실무에서 네트워크 드라이브를 설정하고, 설정된 경로에 파일 혹은 이미지를 업로드, 다운로드 하는 경우들이 많이 있습니다.
- 하지만 WPF에서 관리자 모드로 실행할 경우, FolderBrowserDialog를 이용할 경우 네트워드 드라이브로 설정된 경로가 나오지 않는 문제가 있습니다.
- 해당 문제를 해결하는 방법에 대해서 알려 드리려고 합니다.
해결 방법
- 위에서 말씀 드렸듯이, 관리자 모드로 개발한 WPF 프로그램에서 FolderBrowserDialog를 이용할 경우 네트워크 드라이브로 설정된 경로는 나오지 않는 문제가 있습니다.
- 하지만, 구글링을 통해서 관리자 모드에서도 FolderBrowserDialog에서 네트워크 드라이브 경로를 보여지게 하는 방법에 대해서 알게 되어서 여러분들에게 공유해 드리려고 합니다.
- 해당 부분은 StackOverFlow에서 자료를 찾아서 예제 프로그램을 만든 것입니다.
예제 코드
<Window x:Class="WpfApp1.MainWindow"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:local="clr-namespace:WpfApp1"
mc:Ignorable="d"
Title="MainWindow" Height="238.5" Width="384.5">
<Grid>
<Button x:Name="button" Content="경로 선택"
HorizontalAlignment="Left"
Margin="44,33,0,0"
VerticalAlignment="Top"
Width="282"
Click="button_Click"
Height="137"/>
</Grid>
</Window>
using Microsoft.Win32;
using System.Diagnostics;
using System.Windows;
using System.Windows.Forms;
namespace WpfApp1
{
/// <summary>
/// MainWindow.xaml에 대한 상호 작용 논리
/// </summary>
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
ConfigureWindowsRegistry();
}
private void button_Click(object sender, RoutedEventArgs e)
{
FolderBrowserDialog fbd = new FolderBrowserDialog();
if(fbd.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
Debug.WriteLine(fbd.SelectedPath);
}
}
public void ConfigureWindowsRegistry()
{
RegistryKey localMachine = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, RegistryView.Registry64);
var reg = localMachine.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
if (reg == null)
{
reg = localMachine.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
}
if (reg.GetValue("EnableLinkedConnections") == null)
{
reg.SetValue("EnableLinkedConnections", "1", RegistryValueKind.DWord);
Debug.WriteLine(
"Your configuration is now created,you have to restart your device to let app work perfektly");
}
}
}
}
실행 결과
- 프로그램 실행 결과, FolderBrowserDialog를 이용해도 네트워크 드라이브로 설정된 경로가 제대로 나오는 것을 확인할 수 있습니다.
728x90
'C# > WPF' 카테고리의 다른 글
[WPF 기본 문법] WPF TextBlock, Button 컨트롤 Style 사용하기 (0) | 2021.12.28 |
---|---|
[WPF] WPF ProgressBar 컨트롤 MVVM 패턴으로 구현하기 (3) | 2021.11.27 |
[WPF] WPF 관리자 권한으로 실행하기 (0) | 2021.09.28 |
[WPF 문법] WPF MVVM 패턴 이용하여 오라클 DB 연동하기 (2) | 2021.09.19 |
[WPF] GridSplitter 컨트롤 Position 값 가져오기 (0) | 2021.05.20 |
이 글을 공유하기