我創建了一個具有ini文件和db.mdb(訪問)的應用程序,它將一些圖像從web下載到應用程序附近的文件夾。爲什麼需要UAC更改文件?
嗯,我用Setup Factory Software創建了一個安裝文件。一切似乎相當好,我開始我的應用程序,它不改變ini文件的值,不下載圖像,並沒有插入任何recort到數據庫。
這裏是我的應用程序,C的路徑:\ Program Files文件(x86)的\ XXXXXXX
這裏instering行代碼數據庫
public void AddChannels(List<MediaChannel> list)
{
string connectionString = "Provider=Microsoft.Jet.OleDb.4.0; Data Source=data\\db.mdb;";
try
{
using (OleDbConnection connection = new OleDbConnection(connectionString))
{
OleDbCommand cmd = new OleDbCommand();
cmd.Connection = connection;
connection.Open();
int tmp1;
string tmpstr;
foreach (var mediaChannel in list)
{
tmp1 = mediaChannel.ImagePath.LastIndexOf('/');
tmpstr = mediaChannel.ImagePath.Substring(tmp1+ 1, mediaChannel.ImagePath.Length - tmp1 - 1);
cmd.CommandText = "Insert Into Channels(ChannelName,CategoryName,Url,ImagePath,ChannelType) values(@ChannelName,@CategoryName,@Url,@ImagePath,@ChannelType)";
cmd.Parameters.AddWithValue("@ChannelName", mediaChannel.Name);
cmd.Parameters.AddWithValue("@CategoryName", mediaChannel.CategoryName);
cmd.Parameters.AddWithValue("@Url", mediaChannel.Url);
cmd.Parameters.AddWithValue("@ImagePath", tmpstr);
cmd.Parameters.AddWithValue("@ChannelType", (int)mediaChannel.ChannelType);
cmd.ExecuteNonQuery();
cmd.Parameters.Clear();
}
connection.Close();
}
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
,這裏是我的形象,下載方法
private void DownloadLogo()
{
string localFilename = Application.StartupPath + @"\Imgs\";
if (!Directory.Exists(localFilename))
Directory.CreateDirectory(localFilename);
foreach (var mediaChannel in channelList)
{
string imgName = mediaChannel.ImagePath;
if (imgName.Contains("http://"))
{
int tmp1 = mediaChannel.ImagePath.LastIndexOf('/');
imgName = mediaChannel.ImagePath.Substring(tmp1 + 1, mediaChannel.ImagePath.Length - tmp1 - 1);
}
if (!File.Exists(localFilename + imgName))
{
using (var client = new WebClient())
{
client.DownloadFile(mediaChannel.ImagePath, localFilename + imgName);
}
}
}
}
一切看起來不錯,我從來沒有得到過這樣的問題。如果我作爲管理員運行我的程序,它的工作原理...
還有一件事,我打開我的數據庫是在C:\ Program Files文件(x86)\ XXXXXXX \數據 我用MS Access和有趣的,我可以不編輯表格。它說我需要保存爲你的文件進行更改..我認爲程序文件(86)受UAC保護。我的操作系統是Windows 8 Professional。
也許安裝程序使它像這樣?因爲我無法使用Visual Studio安裝程序,因爲安裝屏蔽設置的許可證有限,所以我使用了第三方安裝程序製作程序。
那麼,如何解決這個問題?我的客戶正在等待我解決此問題。
謝謝Radenko的回答,這就是我所期待的。正如Matthew所說,爲了在所有用戶中分享數據庫,ProgramData看起來更好,對嗎?有沒有像UAC那樣需要? – ertan2002
AppData文件夾特定於每個用戶,因此只有在每個用戶需要單獨的數據庫文件時才使用該文件夾。如果您想在所有用戶之間共享數據庫文件,則需要使用ProgramData。 –
@ ertan2002你不應該需要UAC來訪問ProgramData下的文件夾。 –